共计 923 个字符,预计需要花费 3 分钟才能阅读完成。
文章很水,外围只有一句:因为 ES5 的限度,Proxy 语法无奈用 ES5 写进去(Proxies cannot be transpiled or polyfilled)
背景
近日,组群就 vue 3 的一段对话:
BOSS: 咱们团队哪个我的项目用 Vue 3 了(啥背景没说,底层员工当初毛线信息都得不到)
组长 A: 咱们用了,微前端主我的项目用的 Vue 3(看那,我的小组多先进)
组长 B:Vue 3 不反对 IE 11(老姐你用错了,抖什么伶俐)
。。。
我的问题
很菜的我忽然来了好奇心: Vue 3 为啥不反对 IE11,兼容性问题?不对、兼容性问题 polyfill 应该能够解决。
想在群里问,然而我职级最低没人鸟 ~ 小组 C 的群问了下,而后组长 C
(我组长)回复说:
不反对 IE 是后果,要剖析起因可不能“执果索因”— 个别随便归因进去的都不精确。
想理解为什么,无妨去读下 RFC 和 相干探讨
我狐疑他在抖伶俐,如同又不是。
不反对 IE11 的起因
所以我硬着头皮看了下英文,总结一下起因有三:
- Proxy 更香,Vue 团队想用
- Vue 团队想为干掉 IE 奉献一份力量
- 若反对,开发和保护老本都太高。
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 浏览器