Skip to content

入门

这里不覆盖所有 API,只先把一条线讲清楚:

Vue 代码的运行结果,必须同时从“编译阶段”和“运行阶段”两条线去理解。

很多困惑都来自把这两条线混在一起。比如:

  • 为什么 script setup 看起来不像标准 JavaScript 却能运行?
  • 为什么 v-ifv-forv-model 看上去像模板语法,最后却变成了渲染函数调用?
  • 为什么有些能力能靠插件在构建时实现,而有些必须留到运行时?

先把边界划清楚,后面读单篇原理文会轻松很多。

先看这条链路

先把 Vue 的执行过程压成一条链:

txt
SFC / template / JSX
  -> 编译器转换
  -> render 函数和 VNode 创建调用
  -> 响应式系统触发更新
  -> 运行时 patch 到真实 DOM

这不是实现细节全集,但足够用来判断一个问题应该放在哪一层。

建议先掌握的三个概念

1. Vue 不是只有运行时

你写的 .vue、模板、宏、指令,并不会原样进入浏览器。

它们会先经过编译器处理,再生成浏览器能够执行的 JavaScript 和 CSS。

2. 模板只是输入形式

模板写起来更直观,但执行时,Vue 运行时面对的是渲染函数、VNode、指令绑定和响应式依赖。

3. 编译阶段会提前做优化

很多性能优化并不是在浏览器运行时“临时想出来”的,而是在编译时就把结构分析好了,例如静态节点提升、Patch Flag 标记、Block Tree 等。

本章内容

阅读顺序

  1. 先读 如何阅读与实验这本书,确定阅读和验证方式
  2. 需要时随手查 术语表,减少术语理解阻力
  3. 再读 Vue 编译器介绍,建立整体地图
  4. 再读 编译时指令 vs 运行时指令,补边界感
  5. 最后读 render vs setup render 函数,把认知连接到实际组件代码

按困惑切入

读完这一章后,你应该能回答

  • .vue 文件为什么不是浏览器能直接运行的格式
  • 模板为什么能转成渲染函数
  • 编译时能力和运行时能力各自负责什么
  • 为什么 Vue 既是“模板框架”,也是“运行时框架”

如果这些问题已经基本打通,就可以进入 本质章节,开始拆解最常见的语法糖和文件形态。

如果你想先看真实产物而不是停留在概念层,也可以直接跳到 进阶章节

下一步

这里先要求你先建立这张地图:

  • Vue 同时有编译期和运行期
  • 模板不是最后执行形态
  • 很多语法糖都要放回编译链里理解

这三点稳定下来,后面很多“为什么能这样写”的问题都会有落点。

接着读

接下来进入 本质章节,拆日常高频语法糖的底层形态。

Released under the CC BY-NC-SA 4.0 License.