vue3 不支援 IE11的本質

混子的日常發表於2021-11-26

文章很水,核心只有一句:由於 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 的原因

所以我硬著頭皮看了下英文,總結一下原因有三:

  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 瀏覽器

相關文章