国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

詳解Vue iview IE瀏覽器不兼容報錯(Iview Bable polyfill)

2019-11-19 12:18:55
字體:
來源:轉載
供稿:網友

由于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,如果需要其它鋪墊,可以自行添加。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 乌苏市| 金塔县| 左贡县| 平江县| 吴旗县| 尼木县| 永州市| 镇坪县| 石城县| 邵阳县| 武夷山市| 鹿泉市| 张掖市| 桐城市| 东乡县| 彭山县| 凌海市| 赣州市| 枣强县| 女性| 鄂伦春自治旗| 民和| 缙云县| 田阳县| 蒲江县| 新邵县| 延寿县| 甘肃省| 田林县| 礼泉县| 邛崃市| 河西区| 南澳县| 洱源县| 环江| 大悟县| 三亚市| 灌阳县| 南充市| 崇仁县| 内江市|