目录结构
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 构建中也作为命名导出提供。