vue項目兼容ie瀏覽器

一、兼容ES6

Vue 的核心框架 vuejs 本身激况,以及官方核心插件(VueRouter虐杯、Vuex等)均可以在 ie9 上正常使用。但ie不兼容es6灯帮,所以需要安裝插件將“Promise”等高級語法轉(zhuǎn)換成ie可以識別的es5崖技。

報錯:ReferenceError: “Promise”未定義,頁面空白
  報錯:app.js文件報錯頁面空白施流,可能是缺少配置文件.babelrc

一响疚、 babel-polyfill

npm install babel-polyfill --save
  在main.js中的最前面引入import 'babel-polyfill'(注:必須引入在最前面,保證所有es6語法都會被解析)
  下載完成后找到build文件夾下的webpack.base.conf.js下的一段代碼

module.exports = {
  entry: {
    app: './src/main.js'
  },

// 替換為

module.exports = {
context: path.resolve(__dirname, '../'),
entry: {
  app: ["babel-polyfill", "./src/main.js"],
}

二瞪醋、如果引入 babel-polyfill還有一些高級語法沒有被編譯忿晕,配置 .babelrc文件,官網(wǎng)如下: https://www.babeljs.cn/ 根據(jù)項目選擇引入什么插件银受,以及如何配置践盼,詳情查看官網(wǎng)。

檢查根目錄下是否有.babelrc文件宾巍,如沒有自行創(chuàng)建咕幻。
.babelrc是Babel的配置文件,放在項目根目錄下顶霞,使用Babel的第一步就是配置這個文件肄程,該文件主要是對預設(shè)(presets)和插件(plugins)進行配置

創(chuàng)建.babelrc文件的方法:
  1.新建一個文件
  2.右鍵-重新命名-輸入.babelrc. (開頭和結(jié)尾一共兩個點)
  3.添加配置代碼,

{
    "presets": [
      ["env", {
        "modules": false,
        "useBuiltIns": "entry"
      }],
    "stage-2"
    ]
  }

配置代碼解讀:
(1) modules該參數(shù)的含義是:啟用將ES6模塊語法轉(zhuǎn)換為另一種模塊類型选浑。將該設(shè)置為false就不會轉(zhuǎn)換模塊蓝厌。默認為 ‘commonjs’.
  這樣做的目的是:以前我們需要使用babel來將ES6的模塊語法轉(zhuǎn)換為AMD, CommonJS,UMD之類的模塊化標準語法古徒,但是現(xiàn)在webpack都幫我做了這件事了拓提,所以我們不需要babel來做,因此需要在babel配置項中設(shè)置modules為false隧膘,因為它默認值是commonjs, 否則的話代态,會產(chǎn)生沖突。

(2) useBuiltIns是指定哪些內(nèi)容需要被 polyfill(兼容) 的設(shè)置疹吃,有三個設(shè)置選項

false - 不做任何操作
  entry - 根據(jù)瀏覽器版本的支持蹦疑,將 polyfill 需求拆分引入,僅引入有瀏覽器不支持的polyfill
  usage - 檢測代碼中 ES6/7/8 等的使用情況互墓,僅僅加載代碼中用到的 polyfill

(3) stage-2官方預設(shè)(preset), 有兩種必尼,一個是按年份(babel-preset-es2017),一個是按階段(babel-preset-stage-0)。 這主要是根據(jù)TC39 委員會ECMASCRPIT 發(fā)布流程來制定的判莉。
    因此到目前為止 有4個不同的階段預設(shè):stage-0,1,2,3以上每種預設(shè)都依賴于緊隨的后期階段預設(shè)豆挽,也就是說stage-0是包括stage-1的,以此類推券盅。
  因此 stage-0包含stage-1/2/3的內(nèi)容帮哈。所以如果我們不知道需要哪個stage-x的話,直接引入stage-0就好了锰镀。
  目前一般是使用stage2 (https://babeljs.io/docs/en/babel-preset-stage-2) 該特性規(guī)范己經(jīng)被起草娘侍,將會被納入標準里.

配置完以上兩項后,基本可以解決頁面空白的問題泳炉。

三憾筏、網(wǎng)上還有一些其他注意事項,比如安裝了新的功能性插件e-chart,地圖,或者static目錄下有其他js文件(有es6語法) 等花鹅,IE 會報錯氧腰。

這是由于這些第三方插件的底層也有es6代碼,沒有被編譯刨肃,個人實踐后認為是由于沒有將babel-polyfill引入在頁面最頂部導致的古拴。但如引入在頂部還報錯,請參考以下解決方案:
1.找到webpack.base.config.js

{
  test: /\.js$/,
  loader: 'babel-loader',
  include: [
  resolve('src'),
  resolve('test'),
  resolve('static'),
  resolve('node_modules/webpack-dev-server/client')
  resolve('node_modules/echarts')
  ]
}

二真友、兼容axios

一黄痪、如果只需要兼容axios的話,可以只用 es6-promise 盔然,不引用babel-polyfill桅打,安裝方法如下:

      npm install es6-promise --save
  import promise from 'es6-promise';
  promise.polyfill();

二、IE瀏覽器緩存問題愈案,導致axios接口不重新請求油额,頁面內(nèi)容不刷新

解決方案: axios請求上加時間戳,使每次都是參數(shù)不同的新請求

1刻帚、找到項目中對axios進行封裝的文件
  2.找到post和get方法,修改里面的參數(shù)涩嚣,以post請求為例崇众,原參數(shù)為data: ...param,改為如下第7行所示

//post請求
  post(url, param) {
    return new Promise((resolve, reject) => {
      axios({
    method: 'post',
    url,
    data: {
      t: Date.parse(new Date()),
      ...param
    },
    cancelToken: new CancelToken(c => {
      cancel = c
    })
    }).then(res => {
    resolve(res)
      }).catch((error) => {
    reject(error);
      })
    })
  }

3.問題分析:

這個頁面不刷新的問題,一開始以為是v-router的緩存機制導致的航厚,嘗試在每次跳轉(zhuǎn)路由時加時間戳顷歌,但并沒有解決問題,最后才發(fā)現(xiàn)是axios的問題幔睬。
由此反向推理眯漩,如果將axios加上時間戳,不能解決問題,請重新檢查是否有v-router的赦抖,或者請求方式為history舱卡,等緩存機制的影響。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末队萤,一起剝皮案震驚了整個濱河市轮锥,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌要尔,老刑警劉巖舍杜,帶你破解...
    沈念sama閱讀 221,548評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異赵辕,居然都是意外死亡既绩,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,497評論 3 399
  • 文/潘曉璐 我一進店門还惠,熙熙樓的掌柜王于貴愁眉苦臉地迎上來饲握,“玉大人,你說我怎么就攤上這事吸重』ナ埃” “怎么了?”我有些...
    開封第一講書人閱讀 167,990評論 0 360
  • 文/不壞的土叔 我叫張陵嚎幸,是天一觀的道長颜矿。 經(jīng)常有香客問我,道長嫉晶,這世上最難降的妖魔是什么骑疆? 我笑而不...
    開封第一講書人閱讀 59,618評論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮替废,結(jié)果婚禮上箍铭,老公的妹妹穿的比我還像新娘。我一直安慰自己椎镣,他們只是感情好诈火,可當我...
    茶點故事閱讀 68,618評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著状答,像睡著了一般冷守。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上惊科,一...
    開封第一講書人閱讀 52,246評論 1 308
  • 那天拍摇,我揣著相機與錄音,去河邊找鬼馆截。 笑死充活,一個胖子當著我的面吹牛蜂莉,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播混卵,決...
    沈念sama閱讀 40,819評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼映穗,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了淮菠?” 一聲冷哼從身側(cè)響起男公,我...
    開封第一講書人閱讀 39,725評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎合陵,沒想到半個月后枢赔,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,268評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡拥知,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,356評論 3 340
  • 正文 我和宋清朗相戀三年踏拜,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片低剔。...
    茶點故事閱讀 40,488評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡速梗,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出襟齿,到底是詐尸還是另有隱情姻锁,我是刑警寧澤,帶...
    沈念sama閱讀 36,181評論 5 350
  • 正文 年R本政府宣布猜欺,位于F島的核電站位隶,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏开皿。R本人自食惡果不足惜涧黄,卻給世界環(huán)境...
    茶點故事閱讀 41,862評論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望赋荆。 院中可真熱鬧笋妥,春花似錦、人聲如沸窄潭。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,331評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽嫉你。三九已至信认,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間均抽,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,445評論 1 272
  • 我被黑心中介騙來泰國打工其掂, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留油挥,地道東北人。 一個月前我還...
    沈念sama閱讀 48,897評論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像深寥,于是被迫代替她去往敵國和親攘乒。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,500評論 2 359

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