一、Vue.js 源码组织方式
1. 源码采用TypeScript重写
提高了代码的可维护性。大型项目的开发都推荐使用类型化的语言,在编码的过程中检查类型的问题。
2. 使用Monorepo管理项目结构
使用一个项目管理多个包,把不同功能的代码放到不同的package中管理,每个功能模块都可以单独发布,单独测试,单独使用。
- packages 目录结构
pageages
目录下都是独立发行的包,可以独立使用,以compiler 开头的包,它们都是和编译相关的代码
- compiler-core和平台无关的编译器
- compiler-dom 是浏览器平台的编译器, 依赖与compiler-core
- compoler-sfc sfc 是 单文件组件的意思,作用是编译单文件组件,依赖与compiler-core 和 compiler-dom
- compiler-ssr 是服务端渲染的编译器,依赖与compiler-dom
- reactivity 数据响应式系统,可以独立使用
- runtime-core 和平台无关的运行时
- runtime-dom 针对浏览器的运行时,处理原生 dom api 事件等
- runtime-test 是一个专门为测试编译的轻量级运行时,由于这个运行时渲染出来的 DOM 树其实是一个JS 对象,所以这个js 对象可以运行在所有的环境里,可以用来测试是否渲染正确,可以用来序列化dom 以及记录某次dom 中的操作
- server-renderer 用于服务端渲染
- shared 内部使用的公共APi
- size-check 是一个私有的包,不会发布到`npm ,在 ch 检查包的大小
- templae-explorer 在浏览器运行的实时编译组件,会输出render 函数
- vue 构建完整版Vue
3. 不同构建版本
Vue3中不再构建UMD模块化的方式,因为UMD会让代码