问题描述
wxs 模块存在的意义是什么?和普通 js 模块有什么区别?在 wxml 中使用 wxs 模块中定义的变量和函数的意义是什么?
问题出现的环境背景及自己尝试过哪些方法
相关代码
// 请把代码文本粘贴到下方(请勿用图片代替代码)
wxs 模块存在的意义是什么?和普通 js 模块有什么区别?在 wxml 中使用 wxs 模块中定义的变量和函数的意义是什么?
// 请把代码文本粘贴到下方(请勿用图片代替代码)
10 回答11.1k 阅读
6 回答3k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
3 回答2.3k 阅读✓ 已解决
3 回答2.1k 阅读✓ 已解决
wxs存在的意义就是充当compute/filter这类功能。
vue中有watch(侦听属性),angular中有filter(过滤器)。其核心作用都是用来避免重复地在模板内写过长的表达式。
我们总是会遇到这样的需求,比如把数字格式化为金额的格式;或者把占位符替换为对应国际化内容;或者从多个值中自动选择最小的值进行输出。如果直接把表达式写在模板中,既不利于后期维护,有无法对表达式进行复用。有了过滤器,我们就可以把这种复杂语句单独抽离,然后再模板中引用即可。
补充一下:
为什么不直接用把结果写入data?
因为过滤器的常用场景是做展示层逻辑。比如上面说的数字转金额格式,你只需要在模板中用到的地方调用过滤器,就能把数据转化为最终需要的格式。
而如果用data,则需要在每个可能修改原始数据的地方对数据进行格式化并写回。具体到金额这个例子,你需要在每个接口返回后,遍历其中需要转化的属性,将其修改为金额格式,然后存入一个新字段。工作量庞大,维护困难,而且极容易遗漏。