vue3 不支持 IE11的本质

2021年11月22日 阅读数:8
这篇文章主要向大家介绍vue3 不支持 IE11的本质,主要内容包括基础应用、实用技巧、原理机制等方面,希望对大家有所帮助。

文章很水,核心只有一句:因为 ES5 的限制,Proxy 语法没法用 ES5 写出来(Proxies cannot be transpiled or polyfilled)前端

背景

近日,组群就 vue 3 的一段对话:vue

BOSS: 我们团队哪一个项目用 Vue 3 了 (啥背景没说,底层员工如今毛线信息都得不到)segmentfault

组长 A: 咱们用了,微前端主项目用的 Vue 3 (看那,个人小组多先进)浏览器

组长 B:Vue 3 不支持 IE 11 (老姐你用错了,抖什么机灵)babel

。。。ip

个人问题

很菜的我忽然来了好奇心: Vue 3 为啥不支持 IE11,兼容性问题?不对、兼容性问题 polyfill 应该能够处理。开发

想在群里问,可是我职级最低没人鸟 ~ 小组 C 的群问了下,而后组长 C
(我组长)回复说:v8

不支持 IE 是结果,要分析缘由可不能 “执果索因” -- 通常随意归因出来的都不许确。
想了解为何,不妨去读下 RFC相关讨论

我怀疑他在抖机灵,好像又不是。get

不支持 IE11 的缘由

因此我硬着头皮看了下英文,总结一下缘由有三:it

  1. Proxy 更香,Vue 团队想用
  2. Vue 团队想为干掉 IE 贡献一份力量
  3. 若支持,开发和维护成本都过高。

Vue 2 基于 ES5 getter/setters,Vue 3 基于 Proxy,若实现他们要逻辑双写。Vue 团队不想由于 IE11 作更多的牺牲, 若是将来再出个 Super Proxy 我就太难了。

Babel 呢

问题又来了,Proxy 的问题用 Babel polyfill 一下就完了吗?

Babel...这个问题我无论

from babel

Unsupported feature
Due to the limitations of ES5, Proxies cannot be transpiled or polyfilled. See support in various JavaScript engines.

终于,我找到了根因:

Babel 的 transpiled 和 polyfilled 都没办法支持 Proxy 的功能特性。ES6 是 ES5 的后浪,不是闹的。

涨知识了,JS 的世界还有 Babel 搞不定的东西。

文章很水,核心只有一句:因为 ES5 的限制,Proxy 功能特性没法用 ES5的语法写出来(Proxies cannot be transpiled or polyfilled)

尤雨溪:Vue3 考虑完全放弃 IE 浏览器