计算属性和侦听器

2020-04-26  本文已影响0人  greente_a

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

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

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,可以回答只有是、否两种选项的问题。

上一篇下一篇

猜你喜欢

热点阅读