计算属性和侦听器

所有软件工程方面的优化离不开两方面——高内聚,低耦合。

换句话说,任何框架的产生,主要目的有两点:

1.Write less,do more.(少写多做)

2.降低代码/模块之间的耦合(依赖程度)


计算属性,现在我没弄明白是什么意思,但是应该又是攻城狮们为了解耦而想出的法子。但是这次,应该是第一点占主要地位。

第一个例子,字符反转。




点击即可反转

有了Vue双向绑定能力的加持,看似也没什么毛病。方法被动态绑定在了<button>的onclick事件上,一切看起来都是那么的美好,嗯,至少看起来是的。

我们假设这样一种情况,message的值不再是寥寥数语,而是扶摇直上,突破了万际。

这样点击,然后反转一次的设定,貌似也还可以哦。。。

那我们再加一个条件,至少有100个元素需要引用反转之后的值,难不成要做100次反转运算么。。。还有dom操作,这个超耗时的吧。。。

JS引擎估计撑不住吧。。。

可以预见,如果某个网页真的像这样设计,肯定响应速度是没有办法保证的,于是计算属性应运而生了。

这是另一个例子,不过应用了计算属性。

有同学要问了,这不是一样么。。。非也,计算属性是专门经过优化的,即计算属性是基于它们的响应式依赖进行缓存的。只在相关响应式依赖发生改变时它们才会重新求值。白话就是,它只会在引用的data元素改变时算那么一次,之后的访问,如果data元素没有改变,则立即返回结果。实现方式是典型的“空间换时间”的思想,把需要重复计算的东东存下来就好了嘛~

真开心!

当然你要是不想缓存(比如系统内存开销大之类),还是用方法吧,毕竟高并发什么巴拉巴拉的也没那么容易遇到不是?

那既然计算属性都叫属性了,能给它赋值么?

能。

默认计算属性是只有一个getter的,当然你也可以给它写一个setter。



这样对fullName的操作也会映射回firstName和lastName属性。



非常优雅。

当然有些时候,我们还是需要一些实时监控元素的方法(类似于监听器)。


HTML元素


引入一些外部js库


它使用ajax库调用了一个API,可以回答只有是、否两种选项的问题。


©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容