clone vue-next 仓库
安装依赖:
npm i rollup yarn -g
// + rollup@2.34.0 v1.22.10
安装项目的全部依赖
yarn install
源码目录
vue3 packages 中存放着所有的源码;采用多包架构,在rollup打包时进行细分多包的方式打包;
编译器相关包:
compiler-core (编译器核心代码)
compiler-dom (编译器 dom)
compiler-sfc (单文件组件的解析)
compiler-ssr (服务端渲染)
reactivity:
- 特点:单独抽离,意味着往后再做响应式时,不需要再通过引用vue实例的方式或者object.defineProperty API,这种借鸡生蛋的方式,进行响应式处理;
- 缺点:和vue有着:强依赖,会把我们不需要的一些东西一同打包进去;
- 优点:为响应式处理,增加了灵活性,只需要导入和打包reactivity即可;后续开发第三方库等的响应式处理,将会更加灵活;意义重大;
运行时相关包:
runtime-core(暴露核心实例 核心方法)
runtime-dom(扩展相关)
runtime-test(测试相关)
服务端渲染:server-renderer
模板预览:template-explorer(编译为渲染函数)
打包出口:vue(dist src )
打包相关:scripts(dev开发时,build打包...根据运行时环境来决定node 运行那个js脚本)
执行开发环境 npm run dev
通过rollup进行打包:node执行dev.js
//文件路径
/scripts/dev.js
execa API 相关知识点
rollup打包配置
rollup.config.js
createConfig 每次打包之前,创建一个rollup配置对象;可通过--sourcemap命令配置,让我们看到源码的具体位置
配置 sourcemap,便于源码调试
package.json
"dev": "node scripts/dev.js --sourcemap",
启动内部服务 npm run serve
官方提供的example
我们以composition api todomvc为例
断点 createApp 创建实例过程
进入实例创建入口
http://localhost:5000/packages/runtime-dom/src/index.ts