持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第20天,点击查看活动详情
正式进入第二篇了,第二篇就会比以前更深入一些,第一篇可以说讲了一些基础,一些概念,包括vue的基本使用。到了第二篇,就会深入的源码里去了,看起来也会有点难度。
在看这篇之前,我先给大家说一下我对响应系统的理解,算是抛砖引玉。
没有响应式的时候
我一开始写代码的时候,脑子里并没有响应式的概念的。就是记账式的代码
var a =1
if(a===1){
//do sth
}
如果a变化了呢,那么在赋值的时候就要继续写if
a=2
if(a===2){
// do sth
}
尤其在jquery时代,我都是这样度过的。
$('button').on('click',function(){
$('#id').html('<div>aaa</div>')
})
那时候我理解的响应就是事件,就是ajax去动态改变页面。后面,直到我开始使用了vue。
我理解的响应式
其实响应式用不用都可以,就像jquery时代,通过事件、ajax去动态改变页面,一样可以做到vue的效果,那为什么还需要响应式呢。
其实响应式是为了减少我们的代码,提供自动化,代替手工的过程。就好像普通的机床和数码机床一样,我们加工零件,两种机床都可以,甚至如果有牛逼的老师傅,手工机床加工出来精度更好,那为什么需要数码机床呢?
为的就是自动化,提高了效率。我们再看代码。赋值一个a=1,此时打印一下,自然会出现a=1
let a = 1
console.log(a)
a++
我们日志之后给a+1,之前的打印的日志自然不会变,除非你再次打印。这时候,这个a就是不是响应的。我们可以这样处理一下
let a = 1
const effect = ()=>{
console.log(a)
}
所以只要当a改变时,我们自动执行effect这个函数就可以自动打印日志了。对于vue2,使用了Object.defineProperty,vue3则是使用了proxy.这样就实现了响应式