尤雨溪官宣

原因

自Vue 3的开发开始到2018年底,我们一直被要求提供IE11支持。许多用户询问Vue 3是否将支持IE11,我们最初的计划是发布Vue 3并使其稳定,然后添加稍后会支持IE11。

在漫长的开发过程中,我们还就IE11兼容性进行了研究和实验,但是由于所涉及的复杂性和手头上的其他工作量大,因此已将其优先处理。

当我们再看一下2021年的今天的问题时,浏览器和JavaScript的状况已经发生了很大变化。现在,越来越多的开发人员正在使用现代语言功能,更重要的是,Microsoft本身已经开始通过对Edge的投资积极地将用户推离IE。

它还在自己的主要项目(如Microsoft 365)中放弃IE11支持。就在几天前,WordPress还决定放弃对IE11的支持。IE11的全球使用率已降至1%以下。当我们谈论面向公众的网站和应用程序时,IE11呈明显的快速下降趋势。

我们相信这是一个重新思考IE11对Vue 3支持的机会。

对Vue3 中支持 IE11的成本?

行为不一致

Vue 2的反应系统基于ES5 getter / setter。Vue 3利用ES2015代理获得了性能更高且更完整的反应系统,该系统无法在IE11中进行多填充。这是主要障碍,因为这意味着Vue 3要支持IE11,它实际上需要发布两个具有不同行为的不同版本-一个使用基于Proxy的反应系统,另一个使用类似于Vue 2的基于ES5-getter / setter的系统。。

Vue 3的基于代理的反应性系统提供了几乎完整的语言功能覆盖。它能够检测许多在ES5中不可能或不可行的操作,例如属性添加/删除,数组索引和length突变以及in操作员检查。为Vue 3的代理版本编写的相同代码在IE11版本中不起作用。这不仅给我们带来了技术上的复杂性,也给开发人员带来了持续的精神负担。

我们最初的计划是在IE11版本的开发版本中同时交付Proxy和ES5反应性实现。当它在启用代理的开发环境中运行时,它将检测并警告不兼容IE11的用法。从理论上讲,这是可行的,但由于需要将这两种实现混合在一起,并且在开发和生产之间存在行为差异的风险,因此造成了极大的复杂性。

长期维护的负担

支持 IE11 也意味着我们必须考虑在整个代码库中使用的语言特性,并为我们的发布版本找到合适的 poliyfill / 编译策略。

每一个不能在 IE11 中被 polyfill 的新特性都会带来新的行为警告。一旦 Vue 3 承诺支持 IE11,就永远没办法摆脱了,直到下一个大版本。

对于那些实在需要 IE11 支持的人

如果您需要 IE11 支持,我们的建议是使用 Vue 2。与其为 Vue3 和未来的版本承担巨大的技术债,我们相信,把工作重心放在让 Vue2 拥有更多 Vue3 类似的特性更有意义,让两个版本之间的开发体验更相似。

原文地址

  • https://github.com/vuejs/rfcs/blob/ie11/active-rfcs/0000-vue3-ie11-support.md

  • https://zhuanlan.zhihu.com/p/362000763

最后

欢迎关注【前端瓶子君】✿✿ヽ(°▽°)ノ✿

回复「算法」,加入前端算法源码编程群,每日一刷(工作日),每题瓶子君都会很认真的解答哟!

回复「交流」,吹吹水、聊聊技术、吐吐槽!

回复「阅读」,每日刷刷高质量好文!

如果这篇文章对你有帮助,「在看」是最大的支持

》》面试官也在看的算法资料《《

“在看和转发”就是最大的支持

Logo

前往低代码交流专区

更多推荐