前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >源码解析——VUE

源码解析——VUE

作者头像
江咏之
发布2022-06-16 08:35:22
1920
发布2022-06-16 08:35:22
举报
文章被收录于专栏:技术社区

Vue源码解析

vue使用Object.defineProperty+观察者模式对数据和模板进行绑定,对于数据来说需要进行更新时,即会触发对应的getter和setter函数,在setter函数中,即可根据对应收集到的依赖,触发对应视图层更新。

代码语言:javascript
复制
对于一次收集和一次更新来说,大致流程如下:
在这里插入图片描述
在这里插入图片描述
  • 实例化vue之后,对内部所有的data进行劫持
  • 处理对模板的编译/或者静态编译好的render函数,在处理绑定的变量时,创建watcher
  • 同时获取当前模块对应的初始值,在读取触发数据局的getter函数,进行绑定
  • 绑定成功后,后续触发setter,根据记录的watcher,即可更新所有的模块内容

当然对于模块的编译来说,有运行时编译、静态编译多种形式,同时对于vue来说,vue@2使用了VNode来对模块内容进行了描述,所以在模块编译的流程中,使用VNode能更好的提升编译和更新的性能。

  • 编译模块 Compiler
  • 数据处理 Observer
  • 依赖收集 Watcher/Dep
  • 节点VNode/patch更新

对于通用性的理解来说,vue@2和vue@1并没有太多区别,更多的核心在于VNode部分,也就是把编译模块的部分使用了VNode进行描述,编译为了函数形式,以及增加了patch的过程来保证更新。 节点VNode/patch更新流程: patch->patchVNode->updataChildren

  • 单独更新一个VNode节点
  • 判断children节点更新
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-06-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Vue源码解析
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档