本篇文章将讲解Vue3
编译器,在阅读本篇文章前建议先看一下阅读一下我之前的一篇文章《AST抽象语法树》 尤其是 全网最小编译器,强烈建议跟着写一遍,读一篇可能当时理解了,然后吃过饭就忘,手写一遍代码胜过千言万语, 你的印象会深刻很多, 你会对AST
有什深刻的认识,对于学习babel插件
及本篇文章都很有帮助。本篇文章假设你已经对AST有一些了解了。
回归正题,先介绍本文的内容也就是Vue3编译器的思路
Vue3
编译器的实现思路 源代码(模版) --》 错误分析 --》 parse(生成AST) --》transform(生成JavaScriptAST) --》 generate生成目标代码AST
AST
转换为JavaScriptAST
(增加了codegenNode
属性)JavaScriptAST
生成render函数
createApp
实现 打通compile
与runtime
本文文章从0到1带你手写Vue3运行时。依次深入讲解以下内容
h函数
的实现 --> 支持组件 --> 支持class属性
render渲染器
骨架 --> 设置属性 --> 节点更新render
渲染无状态组件 --> 渲染有状态组件 --> 生命周期钩子 --> setup函数
支持diff
算法 --> 思路 --> 最长递增子序列算法 --> diff
实现