今后会逐渐开启专栏,分享react、vue、webgl、前端工程化等模块
链接: Vue 源码地址
我们将使用vue3.1.4版本进行深入全方位学习
进入源码目录执行 tree -aI “.git*|.vscode” -C -L 1 获取整个目录
vue-next-master目录结构:
├── packages // 源码
├── scripts // 脚本文件,用于存放配置文件,进行编译打包
├── test-dts // 测试文件
├── .prettierrc
├── api-extractor.json // TypeScript的API提取和分析工具
├── CHANGELOG.md
├── jest.config.js // jest配置文件
├── package.json
├── LICENSE
├── README.md
├── rollup.config.js // rollup配置文件
├── tsconfig.json
└── yarn.lock
packages 结构:
├── compiler-core // 编译核心
├── compiler-dom // 针对浏览器环境的编译模块,基于compiler-core
├── compiler-sfc // 用于编译(.vue)文件,学习过webpack的同学就比较熟悉了
├── compiler-ssr // 针对服务端渲染的编译模块,基于compiler-core
├── global.d.ts
├── reactivity // 响应式模块,可单独使用
├── runtime-core // 运行时核心
├── runtime-dom // 针对浏览器环境的运行时,基于runtime-core
├── runtime-test // 用于测试的轻量级y运行时
├── sfc-playground //Vue 3 单文件组件在线 playground
├── server-renderer // 服务端渲染相关
├── shared // 共享的工具库
├── size-check // 测量代码体积的工具
├── template-explorer // 内部使用的编译文件浏览工具
├── vue-compat // vue3兼容相关
└── vue // vue3主入口文件,引入导出了运行时和编译器
Vue3的源码核心在于三大模块:compiler-module,renderer-module,reactivity-module。其中renderer-module包含三个阶段render parse,mount parse,patch parse。
新版Vue 3.0计划并已实现的主要架构改进和新功能:
编译器(Compiler)
运行时(Runtime)
reactivity
单独的数据响应式系统,核心方法reactive、effect、 ref、computed
vue 整合 compiler + runtime
+---------------------+ +----------------------+
| | | |
+------------>| @vue/compiler-dom +--->| @vue/compiler-core |
| | | | |
+----+----+ +---------------------+ +----------------------+
| |
| vue |
| |
+----+----+ +---------------------+ +----------------------+ +-------------------+
| | | | | | |
+------------>| @vue/runtime-dom +--->| @vue/runtime-core +--->| @vue/reactivity |
| | | | | |
+---------------------+ +----------------------+ +-------------------+
个人觉得vue在逐渐react化,初步对比react17的源码以及vue3.0的代码后发现有很多异曲同工之处,尤大借鉴了react hook的想法,但是规避了一些react的问题。
我们将在后续的博客中介绍vue3大模块 :compiler-module,renderer-module,reactivity-module