手撸一个 Vue(看不懂可以举报) - 彩虹刀法
手撸一个 Vue
背景
vue 是啥,有哪些基本功能,模板,script, style, 双向绑定一大堆,太多东西了,太难了,直接开始动手吧
仓库
https://github.com/listen80/two-way-binding
体验一下(pc 上使用)
https://listen80.github.io/two-way-binding/public/
单文件
通过 ajax 获取类似.vue .html .tpl 文件
构建 vue 实例
- 把 script 文本变成 script 运行
- 把原始 data 变成 reactive 的形式,增加依赖收集
- 解析 template,扣出来指令,属性,方法,子组件等为了区分指令前缀使用@而不是 v-
- 挂载 style 样式增加
- 替换当前实例挂载的元素,目前为止所有的元素(html, script, style)都已经使用上来了
总结
就这么结束了,是不是很简单,当然其中的细节很多,上文主要是描述核心思想点\n 本 demo 是没有使用虚拟 dom,是 dom 跟数据直接绑定的,跟进 vue3.6 vapor\n 水平有限,本文只是为了学习分享简单的示例,目的是为了了解运作机制,如果有纰漏请联系我