詳解Vue iview IE瀏覽器不兼容報(bào)錯(cuò)(Iview Bable polyfill)
由于Iview編譯使用到了es6的一些新特性,Internet Explorer所有版本中都會(huì)報(bào)錯(cuò),缺少includes、findIxdex等問題。
本人研究涉及到的環(huán)境:VueCli3.2 + iview 3.1.5
在IE中不支持ES6的新特性,例如:includes、findIndex……
以下方案可以解決該問題:
1. Github iview倉(cāng)儲(chǔ)Issues中提到的
改編譯范圍請(qǐng)用 transpileDependencies: [‘iview'],不要用 include.add,因?yàn)槟J(rèn)配置里用了 exclude,在 webpack 中,多個(gè)條件同時(shí)存在時(shí)需要每個(gè)條件都滿足才執(zhí)行 rule。
但是加了這個(gè)選項(xiàng)后在所有瀏覽器里都會(huì)報(bào)錯(cuò),因?yàn)?iView 里這個(gè)文件不兼容 ES Module。該文件是用很舊版本的 UMD 格式打包的,新版本 UMD 修復(fù)了報(bào)錯(cuò)的問題,但沒有解決和 ES Module 互操作的問題。在 Webpack 4 中,ES Module 不能和 CommonJS / UMD 混用。
所以這里本質(zhì)上是 iView 對(duì) Webpack 4 支持的問題,讓他們把源碼全部轉(zhuǎn)成 ES Module 就好了。
在vue.config.js中添加transpileDependencies: [‘iview']后,可以讓bable編譯過程中檢查iview的代碼,自動(dòng)添加代碼中用到的polyfill。
但是由于iview中有一個(gè)文件使用的UMD打包,所以編譯后的代碼還是在運(yùn)行環(huán)境中報(bào)錯(cuò),導(dǎo)致項(xiàng)目無法使用。
該方案雖然解決了ES6語(yǔ)法問題,但是實(shí)際使用會(huì)報(bào)錯(cuò)。
2. 直接給代碼添加polyfill
修改bable.config.js使用 useBuiltIns: ‘entry'
module.exports = {presets: [ ['@vue/app', {useBuiltIns:'entry'} ] ]}
在Vue入口文件main中導(dǎo)入bable的polyfill
import'@babel/polyfill';
這種方案bable編譯時(shí),會(huì)自動(dòng)導(dǎo)入目標(biāo)瀏覽器(browserslist中配置)需要用到的polyfill,可以保證全局代碼使用都可以新ES代碼。但是,也許有些polyfill會(huì)一直用不到,額外增加了編譯后的文件體積。
3. 使用balbe env,預(yù)置iview中所需要的polyfill(推薦做法)
修改bable.config.js 添加預(yù)導(dǎo)入的polyfill。目前我的項(xiàng)目中用到的polyfill有'es6.promise',‘es6.array.find-index',‘es7.array.includes',‘es6.string.includes'
module.exports = { presets: [ ['@vue/app', {
debug:true,
polyfills: [ 'es6.promise' , 'es6.array.find-index' , 'es7.array.includes' , 'es6.string.includes' ]
} ] ]}
這種方案依然使用Vue項(xiàng)目默認(rèn)方案,不同的是在項(xiàng)目編譯時(shí),會(huì)導(dǎo)入polyfills中指定的polyfill,這樣既可解決iview在ie中運(yùn)行報(bào)錯(cuò)的問題。
上面中是我目前用到的幾polyfill,如果需要其它鋪墊,可以自行添加。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
通過實(shí)例解析chrome如何在mac環(huán)境中安裝vue-devtools插件
這篇文章主要介紹了通過實(shí)例解析chrome如何在mac環(huán)境中安裝vue-devtools插件,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-07-07
vue項(xiàng)目中使用html2canvas解決截圖不全的問題
本文主要介紹了vue項(xiàng)目中使用html2canvas解決截圖不全的問題2023-11-11
關(guān)于json-bigint處理大數(shù)字問題
這篇文章主要介紹了關(guān)于json-bigint處理大數(shù)字問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-05-05
從0搭建Vue3組件庫(kù)如何使用?glup?打包組件庫(kù)并實(shí)現(xiàn)按需加載
這篇文章主要介紹了從0搭建Vue3組件庫(kù)如何使用?glup?打包組件庫(kù)并實(shí)現(xiàn)按需加載,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-03-03
vue 實(shí)現(xiàn)左右拖拽元素并且不超過他的父元素的寬度
這篇文章主要介紹了vue 實(shí)現(xiàn)左右拖拽元素并且不超過他的父元素的寬度,需要的朋友可以參考下2018-11-11
vue中利用iscroll.js解決pc端滾動(dòng)問題
這篇文章主要介紹了vue中利用iscroll.js解決pc端滾動(dòng)問題,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-02-02
Vue watch響應(yīng)數(shù)據(jù)實(shí)現(xiàn)方法解析
這篇文章主要介紹了Vue watch響應(yīng)數(shù)據(jù)實(shí)現(xiàn)方法解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-07-07

