Vue 3 Drops IE11支持计划

2021-05-13 21:27:40

从Vue 3&#39的开发开始以来,我们已经被问及IE11支持,追溯到2018年底。许多用户询问Vue 3是否支持IE11,我们的原始计划是发布Vue 3并让它让它稳定首先,在稍后阶段添加IE11支持。在长期开发过程中,我们还对IE11兼容性进行了研究和实验,而是由于手头的复杂性和其他工作量的数量,它'已经在路上脱颖而出。

当我们在2021年拍摄另一个看这个问题时,浏览器和JavaScript景观已经改变了很多。更多开发人员现在正在使用现代语言特征,更重要的是Microsoft本身已开始积极推动用户远离IE的投资。它还在其自己的主要项目中删除IE11支持,如微软365.几天前,WordPress还决定了解IE11支持。 IE11'全球使用量降至1%以下。当我们谈论面向公开的网站和应用程序时,IE11就是清晰的快速下降。

Vue 2' S反应性系统基于ES5 Getter / Setter。 Vue 3利用ES2015代理进行更加性能和完整的反应性系统,在IE11中不能聚集。这是主要的障碍,因为它意味着Vue 3支持IE11,它基本上需要使用不同的行为来运送两个不同的版本 - 一种使用基于代理的反应性系统,以及使用ES5-Getter / Setter的基于Vue2的不同行为。

Vue 3'基于代理的反应性系统提供了近完整的语言功能覆盖范围。它能够检测到截取在ES5中不可能或不切实际的操作,例如属性添加/删除,阵列依认和长度突变,以及在运营商检查中。为Vue 3的代理版本编写的相同代码在IE11版本中不起作用。这不仅为我们创造了技术复杂性,它也会为开发人员创造一个持续的精神负担。

我们的原始计划是在IE11版本的开发构建中发出代理和ES5反应性实现。在启用代理的开发环境内运行时,它将检测并警告非IE11兼容的使用情况。这将在理论上工作,但创造了巨大的复杂性,因为它需要将两种实现混合在一起并风险开发和生产之间的行为差​​异。

支持IE11也意味着我们必须考虑整个代码库中使用的语言功能,并弄清楚我们的分发文件的适当的聚填充/结局策略。在IE11中不能聚合的每个新功能添加将创建另一个行为警告。一旦Vue 3提交IE11支持,它就赢得了'直到下一个主要版本。

如果可以在Vue本身内完全包含,复杂性仍然可以接受。然而,在与社区成员讨论后,我们意识到两个反应性实施的共存不可避免地向图书馆作者泄露。

通过在Vue 3中支持IE11,图书馆作者敏锐地需要进行该呼叫。图书馆作者将不得不考虑他们的图书馆的Vue 3构建(最重要的也是支持Vue 2) - 如果他们决定支持IE11,他们必须在考虑他们的图书馆的所有ES5反应性警告。

没有人喜欢支持IE11。这是一个垂死的浏览器困在过去。 Web生态系统的进一步向前移动,试图支持它时需要覆盖的间隙越大。具有讽刺意味的是,通过在Vue 3中支持IE11,我们正在努力粘在一起。鉴于我们的用户群,Dropping IE11支持可能会有助于使其过时速度更快。

我们很清楚对IE11的真正需求来自于无法升级的人:金融机构,教育部门以及依赖IE11的屏幕读者的人。如果您正在构建针对这些扇区的应用程序,则可能没有选择。

如果您需要IE11支持,我们的建议是使用Vue 2。我们认为将努力重新引导到2.7释放中的Vue 2,并确保两种主要版本的兼容功能将兼容功能兼容努力,并确保两个主要版本的兼容功能更加有意义。

将@ Vue / Compy-API插件合并到Vue 2.这将使基于API的构图基于API的库直接为Vue 2和Vue 3工作。