Vue.js 3.0 源码的组织方式
程序员文章站
2022-06-24 12:27:10
- 源码采用 TypeScript 重写(类型化的语言),这样提升了代码的可维护性,在编码过程中检查类型问题,比如函数传参的类型不匹配提示- 使用 Monorepo 管理项目结构,它能够使用一个项目来管理多个包,把不同代码放到不同的 package 管理,每个功能模块划分明确,模块之间的依赖关系也很明确,并且每个功能模块都可单独测试,单独发布,单独使用packages 目录结构|-- packages |-- compiler-core 和平台无关的编译器 |-- compiler-dom...
- 源码采用 TypeScript 重写(类型化的语言),这样提升了代码的可维护性,在编码过程中检查类型问题,比如函数传参的类型不匹配提示
- 使用 Monorepo 管理项目结构,它能够使用一个项目来管理多个包,把不同代码放到不同的 package 管理,每个功能模块划分明确,模块之间的依赖关系也很明确,并且每个功能模块都可单独测试,单独发布,单独使用
packages 目录结构
|-- packages
|-- compiler-core 和平台无关的编译器
|-- compiler-dom 浏览器平台下的编译器,依赖于 compiler-core
|-- compiler-sfc 单文件组件编译器,依赖于 compiler-core 和 compiler-dom
|-- compiler-ssr 服务端渲染的编译器,依赖于 compiler-dom
|-- reactivity 数据响应式系统
|-- runtime-core 和平台无关的运行时
|-- runtime-dom 针对浏览器的运行时,处理原生 DOM API 和 事件等
|-- runtime-test 为测试所编写的轻量级运行时,由于它渲染出来的 DOM 树其实是一个 js 对象,所以这个运行时可以运行在所有的 js 环境里,可以用它来测试渲染是否正确,还可以用于序列化 DOM,触发 DOM 事件,以及记录更新中的某次 DOM 操作
|-- server-renderer 用于服务端渲染
|-- shared vue 内部使用的公共 api
|-- size-check 私有的包,不会发布到 npm,作用是在 tree-sharking 后检查包的大小
|-- template-explorer 浏览器里运行的实时编译组件,它会输出 render 函数
|-- vue 用来构建完整版的 vue,依赖于 compiler 和 runtime
本文地址:https://blog.csdn.net/weixin_40599109/article/details/110940383