说说Vue 页面渲染流程
侧边栏壁纸
  • 累计撰写 41 篇文章
  • 累计收到 1 条评论

说说Vue 页面渲染流程

七叶
2026-04-29 / 0 阅读 / 正在检测是否收录...

Vue.js 的页面渲染机制巧妙地将数据变化映射到用户界面,其核心在于​​响应式数据​​和​​虚拟DOM​​的高效协作。下面这张流程图概括了从组件初始化到视图更新的完整生命周期,可以帮助你快速建立整体印象:

css 体验AI代码助手 代码解读复制代码flowchart TD

A[初始化 Vue 实例] --> B[编译模板]
B --> C[生成渲染函数<br>render]
C --> D[执行渲染函数<br>生成VNode]
D --> E[Patch: 将VNode转化为<br>真实DOM]
E --> F[挂载到页面]
F --> G[数据变化触发<br>重新渲染]
G --> H[生成新VNode]
G --> I[保留旧VNode]
H & I --> J[Diff算法对比]
J --> K[最小化更新<br>真实DOM]

下面我们具体看看每个阶段的关键过程。
🔄 响应式数据与依赖追踪
Vue 渲染流程的驱动力来源于其​​响应式系统​​。当你将数据传入 Vue 实例时,Vue 会利用 Object.defineProperty(Vue 2) 或 Proxy(Vue 3) 将这些数据属性转换为​​响应式​​的。这个过程就像是给数据装上了“监听器”。 当组件执行渲染函数时,会读取这些响应式数据,从而触发它们的 getter。Vue 会在此时进行​​依赖收集​​,将当前组件的​​渲染 Watcher​​(可以理解为一个监听器)订阅到这个数据的变更上。一旦数据发生变化,setter 会通知所有订阅的 Watcher,Watcher 并不会立即重新渲染,而是将自己放入一个异步更新队列(这得益于 nextTick机制,它结合了微任务和宏任务),等待下一次事件循环时批量执行,避免不必要的重复计算。
📦 模板编译与渲染函数
我们写在 .vue文件里的