所有软件工程方面的优化离不开两方面——高内聚,低耦合。
换句话说,任何框架的产生,主要目的有两点:
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,可以回答只有是、否两种选项的问题。
网友评论