手写|手写 Vue 系列 之 从 Vue1 升级到 Vue2
前言
上一篇文章 手写 Vue 系列 之 Vue1.x 带大家从零开始实现了 Vue1 的核心原理,包括如下功能:
- 数据响应式拦截
- 普通对象
- 数组
- 普通对象
- 数据响应式更新
- 依赖收集
- Dep
- Watcher
- Dep
- 编译器
- 文本节点
- v-on:click
- v-bind
- v-model
- 文本节点
- 依赖收集
所以接下来的系列内容就是升级上一篇文章编写的
lyn-vue
框架,将它从 Vue1 升级到 Vue2。所以建议整个系列大家按顺序去阅读学习,如若强行阅读,可能会产生云里雾里的感觉,事倍功半。另外欢迎 关注 以防迷路,同时系列文章都会收录到 精通 Vue 技术栈的源码原理 专栏,也欢迎关注该专栏。
目标 升级后的框架需要将如下示例代码跑起来
示例
Lyn Vue2.0 - 锐客网 数据响应式更新 原理
{{ t }}
{{ t1 }}
{{ arr }}
methods + computed + 异步更新队列 原理
{{ counter }}
{{ doubleCounter }}
{{ doubleCounter }}
{{ doubleCounter }}
v-bind
右键审查元素查看我的 title 属性
v-model 原理
{{ inputVal }}
{{ isChecked }}
{{ selectValue }}组件 原理
插槽 原理
{{ scopeSlot }}
知识点
示例代码涉及的知识点包括:
- 基于模版解析的编译器
- 解析模版得到 AST
- 基于 AST 生成渲染函数
- render helper
- _c,创建指定标签的 VNode
- _v,创建文本节点的 VNode
- _t,创建插槽节点的 VNode
- _c,创建指定标签的 VNode
- VNode
- 解析模版得到 AST
- patch
- 原生标签和组件的初始渲染
- v-model
- v-bind
- v-on
- v-model
- diff
- 原生标签和组件的初始渲染
- 插槽原理
- computed
- 异步更新队列
【手写|手写 Vue 系列 之 从 Vue1 升级到 Vue2】示例代码最终的运行效果如下:
说明 该框架只为讲解 Vue 的核心原理,没有什么健壮性可言,说不定你换个示例代码可能就会报错、跑不起来,但是用来学习是完全足够了,基本上把 Vue 的核心原理(知识点)都实现了一遍。
所以接下来就开始正式的学习之旅吧,加油!!
链接
- 配套视频,微信公众号回复:"精通 Vue 技术栈源码原理视频版" 获取
- 精通 Vue 技术栈源码原理 专栏
- github 仓库 liyongning/Vue 欢迎 Star
- github 仓库 liyongning/Lyn-Vue-DOM 欢迎 Star
- github 仓库 liyongning/Lyn-Vue-Template 欢迎 Star
当学习成为了习惯,知识也就变成了常识。 感谢各位的 关注、 点赞、收藏和评论。
新视频和文章会第一时间在微信公众号发送,欢迎关注:李永宁lyn
文章已收录到 github 仓库 liyongning/blog,欢迎 Watch 和 Star。
推荐阅读
- Mysql系统学习|为什么不让用join(《死磕MySQL系列 十六》)
- petite-vue源码剖析-ref的工作原理
- SpringCloud|《微服务系列(Nacos服务配置中心》)
- 人脸识别|Yolo系列的巅峰之作(更确的目标检测框架(附源代码))
- vue-router携带多个参数
- webpack配置vue3项目
- Java|Java 数据结构与算法系列精讲之背包问题
- Google V8系列(三)V8提升函数执行效率的策略(Inline Cache(内联缓存))
- java|用Compose实现手写春联效果
- petite-vue源码剖析-双向绑定`v-model`的工作原理