作者 | Bruno Couriol
译者 | 张卫滨
策划 | 丁晓昀
Vue 团队最近发布了 Vue 3.4。这个新的版本采用了新的模板解析器,据称其速度提升了两倍,同时提供了更高效的响应性系统,减少了不必要的组件重渲染。
在新的版本中,Vue 团队重写了 Vue 的模板解析器。团队解释到:
以前,Vue 使用的是一个递归下降(recursive descent)解析器,依赖许多正则表达式和前向搜索。新的解析器使用了基于 htmlparser2 的状态机分词器(tokenizer),它仅会循环访问整个字符串一次。
团队宣布,在重写之后,无论模板的大小如何,解析器始终都能比原来快两倍。此外,这次重写不会造成任何的破坏性变更,应该完全向后兼容。解析速度的提升将会惠及整个生态系统(如 Volar、vue-tsc 以及使用解析器的其他社区组件),并且可能会缩短构建的时间。
Vue 3.4 还减少了对已计算属性的不必要重新计算。相应地 pull request 提供了详细信息:
如果
computed
的新值没有发生变化,则不会触发computed
、effect
、watch
、watchEffect
、render
依赖多个
computed
,只会触发effect
、同步watch
、同步watchEffect
一次数组的
shift
、unshift
、splice(
只会触发effect
、同步watch
、同步watchEffect
一次由于组件可能会在它们的数据依赖发生变化时重新渲染,所以在这些依赖的响应性计算中提高效率可以减少不必要的重新渲染。
有位开发人员在 Reddit 上庆祝了新版本的发布:
这又是一个很不错的版本,所有的破坏性变更都是可预测的,我们伸着手指头就能把它们数出来(除非你使用了 TSX,那样的话你最好有六根手指)关于该版本完整的特性列表,开发人员可以参阅相关的版本发布博客。
Vue 是一个用于构建用户界面(包括单页面应用程序)的渐进式框架。Vue.js 采用 MIT 开源协议。欢迎通过 Vue.js 的 GitHub 包 提供贡献,并遵循 Vue.js 贡献指南。
查看英文原文:
Vue 3.4 Released, Minimizes Reactive Computations, Speeds up Template Parsing (https://www.infoq.com/news/2024/02/vue-3-4-released/)
声明:本文由 InfoQ 翻译,未经许可禁止转载。