目录结构

2022/11/2 Vue

Vue 的源码都大部分在 src 中,src 的结构如下:

src
├── compiler # 编译相关
├── core # 核心代码
├── platforms # 不同平台的支持
├── shared # 共享代码
├── types # 类型文件
├── v3 # vue3 移植过来的一些功能
├── global.d.ts # 全局声明文件

Vue 2.7.13是采用 TypeScript 写的,较 2.6 相比,Vue 把 sfc 目录放到了 packages 里的compiler-sfc里,服务端渲染(server)的相关内容也都放到了 packages 里的 server-render里了

# compiler

compiler 目录包含 Vue 编译相关的代码。它主要的功能包括,把template模板解析成ast,把ast转化为Render函数,还有一些指令和编译规则等

# core

core 目录是 Vue 的核心代码,包含

  • 内置组件(components)
  • 全局 API (global-api)
  • vm 实例(instance)
  • 观察者(observer)
  • 虚拟 DOM(vdom)
  • 还有一些工具函数(utils)

# platforms

这个部分以前是有 web 和 weex 两个平台的代码,现在只有web端的了

# shared

该目录下定义了一些常量和工具方法

# types

types 则是一些类型文件

# v3

这部分则是 2.7 新增的,把 Vue 3.0 中的一部分内容,向后移至到了 Vue 2.7 版本中。

移植的内容有:

  • Composition API
  • SFC <script setup>
  • SFC CSS v-bind

此外,还支持以下 API:

  • defineComponent():具有改进的类型推断(与Vue.extend相比);
  • h()、useSlot()、useAttrs()、useCssModules();
  • set()、del() 和 nextTick() 在 ESM 构建中也作为命名导出提供。