尤雨溪:Vue3.0 官宣徹底拋棄 IE 瀏覽器

尤雨溪官宣


原因
自Vue 3的開(kāi)發(fā)開(kāi)始到2018年底,我們一直被要求提供IE11支持。許多用戶(hù)詢(xún)問(wèn)Vue 3是否將支持IE11,我們最初的計(jì)劃是發(fā)布Vue 3并使其穩(wěn)定,然后添加稍后會(huì)支持IE11。
在漫長(zhǎng)的開(kāi)發(fā)過(guò)程中,我們還就IE11兼容性進(jìn)行了研究和實(shí)驗(yàn),但是由于所涉及的復(fù)雜性和手頭上的其他工作量大,因此已將其優(yōu)先處理。
當(dāng)我們?cè)倏匆幌?021年的今天的問(wèn)題時(shí),瀏覽器和JavaScript的狀況已經(jīng)發(fā)生了很大變化?,F(xiàn)在,越來(lái)越多的開(kāi)發(fā)人員正在使用現(xiàn)代語(yǔ)言功能,更重要的是,Microsoft本身已經(jīng)開(kāi)始通過(guò)對(duì)Edge的投資積極地將用戶(hù)推離IE。
它還在自己的主要項(xiàng)目(如Microsoft 365)中放棄IE11支持。就在幾天前,WordPress還決定放棄對(duì)IE11的支持。IE11的全球使用率已降至1%以下。當(dāng)我們談?wù)撁嫦蚬姷木W(wǎng)站和應(yīng)用程序時(shí),IE11呈明顯的快速下降趨勢(shì)。
我們相信這是一個(gè)重新思考IE11對(duì)Vue 3支持的機(jī)會(huì)。
對(duì)Vue3 中支持 IE11的成本?
行為不一致
Vue 2的反應(yīng)系統(tǒng)基于ES5 getter / setter。Vue 3利用ES2015代理獲得了性能更高且更完整的反應(yīng)系統(tǒng),該系統(tǒng)無(wú)法在IE11中進(jìn)行多填充。這是主要障礙,因?yàn)檫@意味著Vue 3要支持IE11,它實(shí)際上需要發(fā)布兩個(gè)具有不同行為的不同版本-一個(gè)使用基于Proxy的反應(yīng)系統(tǒng),另一個(gè)使用類(lèi)似于Vue 2的基于ES5-getter / setter的系統(tǒng)。。
Vue 3的基于代理的反應(yīng)性系統(tǒng)提供了幾乎完整的語(yǔ)言功能覆蓋。它能夠檢測(cè)許多在ES5中不可能或不可行的操作,例如屬性添加/刪除,數(shù)組索引和length突變以及in操作員檢查。為Vue 3的代理版本編寫(xiě)的相同代碼在IE11版本中不起作用。這不僅給我們帶來(lái)了技術(shù)上的復(fù)雜性,也給開(kāi)發(fā)人員帶來(lái)了持續(xù)的精神負(fù)擔(dān)。
我們最初的計(jì)劃是在IE11版本的開(kāi)發(fā)版本中同時(shí)交付Proxy和ES5反應(yīng)性實(shí)現(xiàn)。當(dāng)它在啟用代理的開(kāi)發(fā)環(huán)境中運(yùn)行時(shí),它將檢測(cè)并警告不兼容IE11的用法。從理論上講,這是可行的,但由于需要將這兩種實(shí)現(xiàn)混合在一起,并且在開(kāi)發(fā)和生產(chǎn)之間存在行為差異的風(fēng)險(xiǎn),因此造成了極大的復(fù)雜性。
長(zhǎng)期維護(hù)的負(fù)擔(dān)
支持 IE11 也意味著我們必須考慮在整個(gè)代碼庫(kù)中使用的語(yǔ)言特性,并為我們的發(fā)布版本找到合適的 poliyfill / 編譯策略。
每一個(gè)不能在 IE11 中被 polyfill 的新特性都會(huì)帶來(lái)新的行為警告。一旦 Vue 3 承諾支持 IE11,就永遠(yuǎn)沒(méi)辦法擺脫了,直到下一個(gè)大版本。
對(duì)于那些實(shí)在需要 IE11 支持的人
如果您需要 IE11 支持,我們的建議是使用 Vue 2。與其為 Vue3 和未來(lái)的版本承擔(dān)巨大的技術(shù)債,我們相信,把工作重心放在讓 Vue2 擁有更多 Vue3 類(lèi)似的特性更有意義,讓兩個(gè)版本之間的開(kāi)發(fā)體驗(yàn)更相似。
原文地址
https://github.com/vuejs/rfcs/blob/ie11/active-rfcs/0000-vue3-ie11-support.md https://zhuanlan.zhihu.com/p/362000763
最后
