這篇文章給大家分享的是有關Vue中iview IE瀏覽器不兼容報錯怎么辦的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。
成都創新互聯專注于古縣企業網站建設,響應式網站建設,商城網站建設。古縣網站建設公司,為古縣等地區提供建站服務。全流程定制開發,專業設計,全程項目跟蹤,成都創新互聯專業和態度為您提供的服務
由于Iview編譯使用到了es6的一些新特性,Internet Explorer所有版本中都會報錯,缺少includes、findIxdex等問題。
本人研究涉及到的環境:VueCli3.2 + iview 3.1.5
在IE中不支持ES6的新特性,例如:includes、findIndex……
以下方案可以解決該問題:
1. Github iview倉儲Issues中提到的
改編譯范圍請用 transpileDependencies: [‘iview'],不要用 include.add,因為默認配置里用了 exclude,在 webpack 中,多個條件同時存在時需要每個條件都滿足才執行 rule。
但是加了這個選項后在所有瀏覽器里都會報錯,因為 iView 里這個文件不兼容 ES Module。該文件是用很舊版本的 UMD 格式打包的,新版本 UMD 修復了報錯的問題,但沒有解決和 ES Module 互操作的問題。在 Webpack 4 中,ES Module 不能和 CommonJS / UMD 混用。
所以這里本質上是 iView 對 Webpack 4 支持的問題,讓他們把源碼全部轉成 ES Module 就好了。
在vue.config.js中添加transpileDependencies: [‘iview']后,可以讓bable編譯過程中檢查iview的代碼,自動添加代碼中用到的polyfill。
但是由于iview中有一個文件使用的UMD打包,所以編譯后的代碼還是在運行環境中報錯,導致項目無法使用。
該方案雖然解決了ES6語法問題,但是實際使用會報錯。
2. 直接給代碼添加polyfill
修改bable.config.js使用 useBuiltIns: ‘entry'
module.exports = {presets: [ ['@vue/app', {useBuiltIns:'entry'} ] ]}
在Vue入口文件main中導入bable的polyfill
import'@babel/polyfill';
這種方案bable編譯時,會自動導入目標瀏覽器(browserslist中配置)需要用到的polyfill,可以保證全局代碼使用都可以新ES代碼。但是,也許有些polyfill會一直用不到,額外增加了編譯后的文件體積。
3. 使用balbe env,預置iview中所需要的polyfill(推薦做法)
修改bable.config.js 添加預導入的polyfill。目前我的項目中用到的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項目默認方案,不同的是在項目編譯時,會導入polyfills中指定的polyfill,這樣既可解決iview在ie中運行報錯的問題。
上面中是我目前用到的幾polyfill,如果需要其它鋪墊,可以自行添加。
感謝各位的閱讀!關于“Vue中iview IE瀏覽器不兼容報錯怎么辦”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!
網頁題目:Vue中iviewIE瀏覽器不兼容報錯怎么辦
標題來源:http://vcdvsql.cn/article14/phojde.html
成都網站建設公司_創新互聯,為您提供全網營銷推廣、面包屑導航、搜索引擎優化、網站內鏈、網站排名、靜態網站
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯