詳解vue 兼容IE報(bào)錯(cuò)解決方案

IE 頁(yè)面空白

報(bào)錯(cuò)信息

image
image

此時(shí)頁(yè)面一片空白

報(bào)錯(cuò)原因

Babel 默認(rèn)只轉(zhuǎn)換新的 JavaScript 語(yǔ)法(如箭頭函數(shù)),而不轉(zhuǎn)換新的 API 昔穴,比如 Iterator镰官、Generator、Set吗货、Maps泳唠、Proxy、Reflect宙搬、Symbol笨腥、Promise 等新的對(duì)象或者方法勇垛。

例如 Promise 脖母、新的原生方法如 String.padStart (left-pad) 等。為了解決這個(gè)問(wèn)題闲孤,我們使用一種叫做 Polyfill(代碼填充谆级,也可譯作兼容性補(bǔ)丁)的技術(shù)讼积。

簡(jiǎn)單的說(shuō)肥照,兼容問(wèn)題一般是IE 對(duì)于es6 的部分新對(duì)象、表達(dá)式币砂,語(yǔ)法并不支持建峭,解決方案是使用 babel-polyfill 來(lái)正常使用ES6。

Polyfill 是什么

舉個(gè)例子决摧,有些舊瀏覽器不支持 Number.isNaN方法亿蒸,Polyfill就可以是這樣的:

if(!Number.isNaN) {
  Number.isNaN = function(num) {
    return(num !== num);
  }
}

Polyfill就是類似這樣解決API的兼容問(wèn)題

解決方案

1、使用babel-polyfill

引入 babel-polyfill

npm i -S babel-polyfill

如何使用

使用它時(shí)需要在你應(yīng)用程序的入口點(diǎn)頂部或打包配置中引入掌桩。

在main.js 引入

import 'babel-polyfill'

或者在config中的 webpack.base.conf.js中 修改配置

entry:{
  app:['babel-polyfill','./src/main.js']   
}

2边锁、在index.html 加入以下代碼(非必須)

<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">

3、babel-loader 中指定模塊轉(zhuǎn)碼

增加了poly-fill還是報(bào)錯(cuò)波岛,這一般是使用了第三方的ui框架茅坛、庫(kù)、插件等则拷,并且這些ui框架贡蓖、庫(kù)、插件底層有es6的語(yǔ)法煌茬。

找到webpack.base.conf.js 中的babel-loader

比如我這里用了element-ui 跟 v-charts 修改成如下:

{
    test: /\.js$/,
    loader: 'babel-loader',
    include: [
     resolve('src'),
     resolve('test'),
     resolve('node_modules/webpack-dev-server/client'),
     resolve('node_modules/v-charts/src'),
     resolve('node_modules/vue-awesome'),
     resolve('node_modules/element-ui/packages'),
     resolve('node_modules/element-ui/src')
    ]
}

4斥铺、打包問(wèn)題

如果是webpack代碼打包出錯(cuò),一般到 github webpack Issues中可以找到答案

這個(gè)錯(cuò)誤是因?yàn)閣ebpack-dev-server 版本問(wèn)題

image

5坛善、Babel 配置 .babelrc文件

.babelrc是Babel的配置文件晾蜘,放在項(xiàng)目根目錄下邻眷。一般情況下.babelrc文件不需要修改,如果以上都做了剔交,還是報(bào)錯(cuò)肆饶,可以看下官網(wǎng)文檔來(lái)配置下該文件

image

在項(xiàng)目使用 vue-cli 生成的代碼中,根目錄有一個(gè) .babelrc 文件岖常。在默認(rèn)生成的模板內(nèi)容中驯镊,增加"useBuiltIns": "entry",這是一個(gè)指定哪些內(nèi)容需要被 polyfill(兼容) 的設(shè)置

useBuiltIns有三個(gè)設(shè)置

  • false - 不做任何操作
  • entry - 根據(jù)瀏覽器版本的支持腥椒,將 polyfill 需求拆分引入阿宅,僅引入有瀏覽器不支持的polyfill
  • usage - 檢測(cè)代碼中 ES6/7/8 等的使用情況,僅僅加載代碼中用到的 polyfill
{
 "presets": [
  ["env", {
   "modules": false,
   "useBuiltIns": "entry"
  }],
  "stage-2"
 ],
 "plugins": ["transform-runtime", "transform-vue-jsx"],
 "env": {
  "test": {
   "presets": ["env", "stage-2"],
   "plugins": ["istanbul"]
  }
 }
}

具體相關(guān)可以查看Babel官網(wǎng):https://www.babeljs.cn/

總結(jié)

1笼蛛、用vue 寫的項(xiàng)目最多可以兼容到IE9 及以上版本

2洒放、使用babel-polyfill

3、在babel-loader中指定需要轉(zhuǎn)碼的第三方的ui框架滨砍、庫(kù)往湿、插件路徑

4、配置 .babelrc文件

5惋戏、Babel 是一個(gè)厲害的東西https://www.babeljs.cn/

補(bǔ)充:

問(wèn)題:ie瀏覽器autoprefixer自動(dòng)補(bǔ)全css前綴無(wú)效

解決方法:

ie發(fā)現(xiàn)使用內(nèi)聯(lián)樣式领追,autoprefixer無(wú)法生效,所以需要寫到style標(biāo)簽內(nèi)响逢。

問(wèn)題:ie10打開(kāi)包語(yǔ)法錯(cuò)誤绒窑,如圖所示

image

解決方法

點(diǎn)擊app.js,跳轉(zhuǎn)到報(bào)錯(cuò)的位置,如圖

image

發(fā)現(xiàn)最后一行有個(gè)import的文件舔亭,所以鎖定到錯(cuò)誤肯定是在引入的這個(gè)文件內(nèi)些膨。

把common.js打開(kāi),檢查語(yǔ)法钦铺,發(fā)現(xiàn)有個(gè)變量定義用了ES6的語(yǔ)法let订雾。所以引入的文件,插件沒(méi)有起作用矛洞。

沒(méi)有將ES6轉(zhuǎn)ES5洼哎。然后修改了之后,問(wèn)題解決沼本。

以上就是本文的全部?jī)?nèi)容噩峦,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家抽兆。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末壕探,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子郊丛,更是在濱河造成了極大的恐慌李请,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,635評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件厉熟,死亡現(xiàn)場(chǎng)離奇詭異导盅,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)揍瑟,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,543評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門白翻,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人绢片,你說(shuō)我怎么就攤上這事滤馍。” “怎么了底循?”我有些...
    開(kāi)封第一講書人閱讀 168,083評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵巢株,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我熙涤,道長(zhǎng)阁苞,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書人閱讀 59,640評(píng)論 1 296
  • 正文 為了忘掉前任祠挫,我火速辦了婚禮那槽,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘等舔。我一直安慰自己骚灸,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,640評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布慌植。 她就那樣靜靜地躺著甚牲,像睡著了一般。 火紅的嫁衣襯著肌膚如雪涤浇。 梳的紋絲不亂的頭發(fā)上鳖藕,一...
    開(kāi)封第一講書人閱讀 52,262評(píng)論 1 308
  • 那天,我揣著相機(jī)與錄音只锭,去河邊找鬼著恩。 笑死,一個(gè)胖子當(dāng)著我的面吹牛蜻展,可吹牛的內(nèi)容都是我干的喉誊。 我是一名探鬼主播,決...
    沈念sama閱讀 40,833評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼纵顾,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼伍茄!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起施逾,我...
    開(kāi)封第一講書人閱讀 39,736評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤敷矫,失蹤者是張志新(化名)和其女友劉穎例获,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體曹仗,經(jīng)...
    沈念sama閱讀 46,280評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡榨汤,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,369評(píng)論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了怎茫。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片收壕。...
    茶點(diǎn)故事閱讀 40,503評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖轨蛤,靈堂內(nèi)的尸體忽然破棺而出蜜宪,到底是詐尸還是另有隱情,我是刑警寧澤祥山,帶...
    沈念sama閱讀 36,185評(píng)論 5 350
  • 正文 年R本政府宣布圃验,位于F島的核電站,受9級(jí)特大地震影響枪蘑,放射性物質(zhì)發(fā)生泄漏损谦。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,870評(píng)論 3 333
  • 文/蒙蒙 一岳颇、第九天 我趴在偏房一處隱蔽的房頂上張望照捡。 院中可真熱鬧,春花似錦话侧、人聲如沸栗精。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 32,340評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)悲立。三九已至,卻和暖如春新博,著一層夾襖步出監(jiān)牢的瞬間薪夕,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 33,460評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工赫悄, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留原献,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,909評(píng)論 3 376
  • 正文 我出身青樓埂淮,卻偏偏與公主長(zhǎng)得像姑隅,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子倔撞,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,512評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容