vue -- v3.4commit提交记录
Published:
·
LastMod: December 10, 2023
·
1882 words
vue – v3.4commit提交记录 🔗
复制htmlparser2 Parser Tokenizer文件 (解析器和分词)
去掉xmlMode和htmlMode,本质上vue不存在xmlMode
去除小写属性,
- 分词在对象构造函数中实例化
- buffer重写成字符串
- 重写slice方法
- 增加parse入口方法,用于实例调用
主parser中重写入口
- 暴露parser
- 增加htmlMode
parser中单独实例化分词器
- 分词器中记录当前指针的行、列、开始的行、列
去除行列计数
getPositionForIndex获取当前index所在的行列数据
用stack数组记录元素堆栈
onattribname中拦截指令相关的标签,处理指令结尾
currentAttrs 改为用Set记录当前属性
删除Parser中处理指令的代码,移到到分词器中处理
增加prop位置索引信息,删除外部上下文检查
删除解析中htmlMode的代码
分词器中处理插值的部分
{{}}
处理v-pre指令部分
增加3种处理模式,base、sfc、html
- 删除buildIn类型
- 改为手写,包括Suspense和Transition
- refactor: swap to new template parser
- parser中特殊处理vFor指令
- 处理浏览器部分特殊字符解析
- 标记解析时的根节点,默认为**Namespace.HTML **。
- 支持sfc中模版重用的功能
- 现在入口处直接转换成ast
- 原transform部分不再进行转换ast了
- compile部分优先使用ast,不存在则才使用source源码
- 分词器中加入对template模板的支持
- 修复新解析器中vBind的处理
- 如果template是从src引入的则不再处理
- 重写resolveTemplateUsageCheckString中递归的写法
|
|
处理template lang=html的情况
强制刷新ast
当使用自定义编译器时,ast不可以复用
优化位置克隆,这里使用直接赋值
去除magic-string中的script trim方法,这里作者解释可以优化10%的时间
magic-string's trim method uses a regex check for aborting which turns
out to be extremely expensive - it cna take up to 10% time in total SFC
compilation! The usage here is purely aesthetic so simply removing it
for a big perf gain is well worth it.
- 合并生成代码中的一些多余操作, 这里在生成代码是的一些换行操作,原来通过push一个回车生成新行,现在标记成flag,可以提升6%
|
|
- 优化sourcemap生成, 这里直接操作context.map的原型,这里作者解释了,因为source-map-js中的addMapping()实现有一堆不必要的参数和验证检查,在我们的例子中是纯粹的开销。
|
|
release: v3.4.0-alpha.2 🔗
空行问题, 首字符为回车行,会插入空行
ssr模式下ast重用
- 增加flag用于确认是否已经解析过
增加解析容忍度
修复属性参数为空的情况
release: v3.4.0-alpha.3 🔗
分词器在重置方法时调用重置inRCDATA 以致后续解析其他模板时不再报错
在解析模板开始时,重置分词器是否在xml的flag
模板在解析时,不去解析Error作为全局变量
通过分析ast,找出模版中引入的变量使用(analyze import usage in template via AST (#9729))
- 解析器新增入口flag,(是否解析语句),默认时true
- 新增creteSimpleExpression入口函数
- 解析语句部分
- children部分ast赋值到解析node对象上
- 原来的code组装方式由原来的字符串拼接,现在采用Set进行整合去重
v-node指令监听语法升级为错误抛出
删除v-is语法
修复在v-pre中的插值语法
release: v3.4.0-alpha.4 🔗
- 校验props的validator包含2个参数
- 使用同样的解析参数进行编辑处理
- 兼容最近的tc39提案,可以动态声明引入的类型https://github.com/tc39/proposal-import-attributes
|
|
- 透传filename属性
|
|
- 提升ssr下面,hydrant对于html属性的检查,是否需要跳过检查
- 增加
__VUE_PROD_HYDRATION_MISMATCH_DETAILS__
标志,用于记录hydrant - 增加MathML语法标签的支持
- 增加组件类型中对于Slots的输出
- 输出
DefineType