项目简介
本项目基于 Vue.js 3 框架,逐步实现了 Vue 3 的大部分核心功能。涵盖响应式系统、编译器、渲染器、组件化等关键模块,旨在通过深入剖析和逐步实现这些功能,助力开发者更好地理解 Vue 3 的内部工作原理。
项目的主要特性和功能
- 响应式系统
- 借助
reactive
和effect
建立响应联系,用track
收集依赖,trigger
触发更新。 - 支持嵌套
reactive
、多次代理、劫持key in obj
等操作,可处理分支切换、嵌套effect
等复杂情况。 - 提供
computed
、watch
、ref
等功能以满足不同响应式需求。
- 借助
- 渲染器
- 与响应系统结合,自动调用渲染器完成页面渲染与更新。
- 实现挂载、更新、卸载等操作,正确处理 HTML Attributes 与 DOM Properties、class、style 等属性。
- 支持事件处理,解决事件冒泡与更新时机问题,采用 Diff 算法优化子节点更新性能。
- 组件化
- 实现组件的描述、挂载与更新,支持组件状态的初始化和自更新。
- 处理组件的
props
、setup
函数、事件与emit
、插槽等功能,支持异步组件、函数式组件、内建组件等。
- 编译器
- 将 Vue.js 模板编译为渲染函数,包含模板的词法分析、语法分析、语义分析,以及 AST 的转换和代码生成。
- 采用状态机和递归下降算法构造模板 AST,支持不同文本模式的解析。
- 进行编译优化,如动态节点收集、补丁标志、静态提升、预字符串化、缓存内联事件处理函数等。
- 服务端渲染:虽暂时未更新,但预留了同构渲染相关功能的开发空间。
安装使用步骤
- 环境准备:确保已安装 Node.js 环境,并且
pnpm
可用。 - 项目复制:使用
git clone
命令将项目复制到本地。 - 安装依赖:进入项目目录,运行
pnpm install
安装项目依赖。 - 打包单个模块:默认打包
reactivity
,若要打包其他模块,如compiler
,可运行pnpm run dev -m compiler
或pnpm run dev -m [packageName]
。 - 打包整个项目:运行
pnpm run build
打包整个项目。
下载地址
点击下载 【提取码: 4003】【解压密码: www.makuang.net】