尤雨溪 Vue2 设计过程 Vue3 的蜕变?

Vue.js 团队在 Vue 2.x 基础上研究并重写了 Vue 3.0,利用新JavaScript特性如Proxy提升响应式性能,解决现有架构问题。Vue 3.0 引入了TypeScript,优化了模板编译和渲染策略,以提高性能和减少包体积。此外,Vue 3.0 提出了Composition API,以增强大型项目中代码的可维护性和扩展性,同时保持对现有Options API的兼容性。
摘要由CSDN通过智能技术生成

Lessons from rewriting the next major version of Vue.js

在过去的一年中,Vue团队一直在研究Vue.js的下一个主要版本,我们希望在2020年上半年发布该版本。(在撰写本文时,这项工作仍在进行中)。 Vue的主要版本于2018年底形成,当时Vue 2的代码库已有两年半的历史了。在通用软件的生命周期中听起来可能并不长,但在此期间,前端环境发生了巨大变化。

有两个主要的考虑因素使我们开发了Vue的新主要版本(并重写了它):首先,主流浏览器普遍提供了新的JavaScript语言功能。其次,随着时间的推移,当前代码库中的设计和体系结构问题已经暴露出来。

[为什么要改写]

利用新的语言功能

随着ES2015 的标准化,JavaScript (正式称为ECMAScript,缩写为ES )获得了重大改进,主流浏览器终于​​开始为这些新功能提供不错的支持。特别是一些为我们提供了极大提高Vue功能的机会。

其中最值得注意的是Proxy,它允许框架拦截对象上的操作。Vue的核心功能是能够侦听对用户定义状态所做的更改并以反应方式更新DOM的能力。Vue 2通过使用getter和setter替换状态对象上的属性来实现这种反应性。切换到Proxy将使我们消除Vue的现有限制,例如无法检测到新的属性添加并提供更好的性能。

但是,Proxy在IE浏览器或者旧版本的浏览器中存在兼容行问题。为了利用它,我们必须调整框架的浏览器支持范围,这是一个重大突破,只能在新的主要版本中发布。

解决架构问题

在维护Vue2的过程中,由于现有架构的局限性,我们积累了许多难以解决的问题。例如,模板编译器的编写方式使适当的源映射支持非常具有挑战性。同样,虽然Vue 2从技术上允许构建针对非DOM平台的更高级别的渲染器,但我们必须派生代码库并复制大量代码,才能实现这一点。要在当前的代码库中解决这些问题,将需要进行大量风险较大的重构,这几乎等同于rewrite 。

同时,我们以各种模块的内部与浮动代码之间隐式耦合的形式积累了技术债务,而浮动代码似乎并不属于任何地方。这使得孤立地理解代码库的一部分变得更加困难,并且我们注意到,贡献者很少会对进行重要的更改充满信心。重写将使我们有机会牢记这些注意事项来重新考虑代码组织。

要在当前的代码库中解决这些问题,将需要进行大量风险较大的重构,这几乎等同于rewrite 。

[初始原型阶段]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值