新版本紧张变革
重写模板解析器,速率提升了 2 倍
重构相应性系统 (Reactivity System),让 effect 的触发更准确高效

优化 API,比如 defineModel 进入稳定阶段,以及绑定 props 时的同名简写
更新亮点
解析器速率提升 2 倍,优化 SFC 构建性能
Vue 3.4 完备重写了模板解析器。在旧版本,Vue 利用递归低落解析器,该解析器依赖了大量正则表达式和前向搜索。
新的解析器利用基于 htmlparser2 的状态机 tokenizer(分词器),它仅迭代全体模板字符串一次。结果是对付所有尺寸的模板而言,解析器始终优化 2 倍。得益于 Vue 广泛的测试用例和 ecosystem-ci,它也 100% 向后兼容 Vue 终端用户。
在将新的解析器与系统的其他部分集成时,开拓团队还创造了进一步优化整体 SFC 编译性能的机会。基准测试显示,在天生源码映射的同时,编译 Vue SFC 的脚本和模板部分的时候,性能优化了约 44%,因此 Vue 3.4 该当会优化大多数利用 Vue SFC 的项目构建。
但是请把稳,Vue SFC 编译只是现实项目中全体构建过程的一部分。与单独的基准测试比较,端到端构建韶光的终极收益可能要小得多。
在 Vue 核心库之外,新的解析器还将优化 Volar/vue-tsc,以及须要解析 Vue SFC 或模板的社区插件的性能,比如 Vue Macros。
更高效的相应性系统 (Reactivity System)
3.4 对相应性系统进行了重大重构,目标是提高打算属性的重新打算效率。
比如下面的场景:
constcount=ref(0)constisEven=computed(()=>count.value%2===0)watchEffect(()=>console.log(isEven.value))//logstruecount.value=2//logstrueagain
在 3.4 之前的版本,每当 count.value 变更时,纵然打算结果不变,也会触发 watchEffect 的回调。通过 3.4 优化,现在仅当打算结果实际发生变更时才会触发回调。
v-bind 同名简写
下面用例:
<img:id="id":src="src":alt="alt"/>
可简写为:
<img:id:src:alt/>
Vue 团队表示,最初他们担心这种用法会与布尔属性稠浊。但在重新核阅该功能后,考虑到其动态特性,他们认为 v-bind 的行为比原生属性更像 JavaScript 是故意义的。