【D1n910】nuxt項目兼容低版本ie
正常操作,正常分析,大家好,我是D1n910

Nuxt其實是很爽的開箱即用的SSR方案。
它本身就已經(jīng)繼承了大量的輪子。
Nuxt本身默認(rèn)兼容到ie9。
做的項目發(fā)現(xiàn)卻不能夠在ie9上跑,甚至不能在ie10上跑。
總結(jié)有以下幾種情況和對應(yīng)方式(感覺不僅僅是nuxt,其他的也可以這么做)
一、第三方包代碼不兼容ie9
用nuxt自帶的babel進(jìn)行轉(zhuǎn)換。babel轉(zhuǎn)換默認(rèn)不會轉(zhuǎn)換第三方node_modules/下的內(nèi)容。
通過開發(fā)者工具的報錯抓到對應(yīng)的第三方包名稱。
通過配置文件nuxt.config.js下的build屬性的transpile,可以針對需要解析的第三方包進(jìn)行轉(zhuǎn)換。

比如這里的ismobile.js的const就沒做轉(zhuǎn)換,可以添加上去后進(jìn)行轉(zhuǎn)換。


二、使用了未定義的javascript對象
比如使用了Map對象,IE10及其以下版本不支持Javascript Map對象,會提示“Map”未定義。
那么可以引入對應(yīng)的core-js包進(jìn)行轉(zhuǎn)換。
新建一個文件夾 /plugins/core.js
這里引入對應(yīng)的轉(zhuǎn)換包

通過配置文件nuxt.config.js下的plugins屬性,添加剛剛的core(放到第一位)

然后就可以轉(zhuǎn)換成功了
三、使用了高級js原型鏈prototype的方法
比如我在根文件html使用了includes方法,那么就會報送includes錯誤。通過改為低版本的的方法實現(xiàn),比如我改為indexOf判斷。
以上的內(nèi)容就差不多了。
四、使用了不兼容的第三方j(luò)s
如果你引用了第三方j(luò)s的cdn然后報錯,比如我這邊用了iconfont的js的cdn,需要下載后作為本地js文件然后轉(zhuǎn)換處理。
核心內(nèi)容還是用的babel,做了以上內(nèi)容,基本上可以兼容到ie9.
什么?兼容到ie6?你再說一遍?喂喂喂,我在服務(wù)器……哎呀,風(fēng)大聽不見啊喂……先這樣,掛了。bye
-- END --