computed
- computed即计算属性,会对绑定到视图的对象进行处理,监听到变化时,会执行对应的方法。
- 计算属性是基于依赖进行缓存的,只有当依赖发生变化时,才会重新求值。
看一下Vue官网的例子:
<div id="example">
<p>Original message: "{{ message }}"</p>
<p>Computed reversed message: "{{ reversedMessage }}"</p>
</div>
var vm = new Vue({
el: '#example',
data: {
message: 'Hello'
},
computed: {
// 计算属性的 getter
reversedMessage: function () {
// `this` 指向 vm 实例
return this.message.split('').reverse().join('')
}
}
})
声明了一个计算属性
reversedMessage
,其后面的函数会作为vm.reversedMessage
的getter
。
watch
- watch表示侦听,用来观察和响应Vue实例上的数据变动。我们可以在watch中写一些方法,当某些数据变动时,让他们执行。
还是刚才Vue官网那个例子,我们尝试用watch重新写一下:
<div id="example">
<p>Original message: "{{ message }}"</p>
<p>Computed reversed message: "{{ reversedMessage }}"</p>
</div>
var vm = new Vue({
el: '#example',
data() {
return {
message: 'Hello',
}
},
watch: {
message: {
handler: function() {
this.reversedMessage = this.message.split('').reverse().join('')
},
immediate: true
}
}
})
可以明显地感受到watch的写法相对更加复杂一点。不过实现起来也没什么特别的问题。