vue3源码(梳理阅读)

4,744 阅读1分钟

Vue3源码阅读梳理

如果想要手写实现源码中的函数,阅读我的上一篇文章 Vue3源码(简单手写实现)

源码三大核心 compiler丨reactivity丨runtime

image.png

在阅读源码之前,如果编辑器是vscode,推荐安装二个插件:

image.pngimage.png

推荐结合使用,单个使用也能达到效果,使用方式找度娘.(看自己)

Todo Tree : 主要进行代码注释的高亮,需要在settings.json文件中进行配置.(也有侧边栏)

image.png

Bookmarks : 主要功能是定位,可以在侧边栏进行点击跳转.

image.png

开始阅读源码

Vue.createApp(App).mount('#app')大致过程

createApp

image.png

render

image.png

返回app

image.png

image.png

mount

image.png

image.png

image.png

App组件的挂载和渲染过程

App组件的挂载和渲染过程.png

大致分为13步,具体截图如下

1. patch:进行diff算法.

image.png

2. 处理组件节点.

image.png

2.1 进入processComponent

image.png

3. 调用mountComponent挂载组件

image.png

4. 初始化component,对组件的数据进行赋值和操作

image.png

5. 调用设置和渲染的副作用函数

image.png

5.1 副作用函数

image.png

6. 调用了副作用函数effect()

image.png

7. renderComponentRoot,对template进行渲染

image.png

8. 把subTree子树的VNode挂载到container上,调用patch()

image.png

9. 处理DOM元素,比如div/button/span(每个子树subtree)

image.png

9.1 进入processElement

image.png

10. 如果还有子元素,进行patch之后,进行挂载

image.png

11.12.13. 处理子节点,进行挂载

image.png

通过debugger方式查看源码

先打上debugger,按F12刷新一下,通过右面上边的按钮进行调试.

image.png