vue双向绑定原理

vue数据双向绑定是通过数据劫持结合发布者-订阅者模式的方式来实现的。利用了 Object.defineProperty() 这个方法重新定义了对象获取属性值(get)和设置属性值(set)。
通过Object.defineProperty()来劫持属性的,使用属性的时候触发getter函数,收集依赖;修改属性的时候触发setter函数,触发相应的回调。

Observer 对数据的属性进行递归遍历,使用Object.defineProperty进行数据劫持。
Compiler 用于将模板编译为渲染函数,并渲染视图页面
parse使用正则等方式解析template中的指令,class,style等数据,生成AST(抽象语法树)
optimize进行优化,标记静态节点,该节点会跳过diff
generate,把AST转化为渲染函数,渲染函数用于生成虚拟DOM
Watcher 是Observer和Compiler之间通信的桥梁
自身实例化的时候,调用getter函数,向deps添加watch
当数据修改时,调用setter函数,调用deps.notify,执行watch的update函数
执行watch的update函数,重新生成虚拟DOM,并进行Diff对页面进行修改

前端问题总结 文章被收录于专栏

总结一些前端常见的面试笔试题,来和大家分享鸭

全部评论

相关推荐

不愿透露姓名的神秘牛友
11-27 10:46
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
1
收藏
分享
牛客网
牛客企业服务