Vue CLI 3使用:瀏覽器兼容性(四)

我們可以通過配置來使項(xiàng)目兼容某些瀏覽器。

package.json 文件里的 browserslist 字段 (或一個單獨(dú)的 .browserslistrc 文件),指定了項(xiàng)目的目標(biāo)瀏覽器的范圍。這個值會被 @babel/preset-envAutoprefixer 用來確定需要轉(zhuǎn)譯的 JavaScript 特性和需要添加的 CSS 瀏覽器前綴。browserslist具體使用方法:https://github.com/browserslist/browserslist

Polyfill

Babel中useBuiltIns如果設(shè)為 "usage",Babel 會根據(jù)實(shí)際代碼中使用的代碼,以及配置的browserslist,按需引入對應(yīng)的 polyfill。已確保最終包里 polyfill 數(shù)量的最小化。然而,如果其中一個依賴需要特殊的 polyfill,默認(rèn)情況下 Babel 無法將其檢測出來。以下幾種方法可以解決:

  1. 使用 @vue/babel-preset-apppolyfills 選項(xiàng)預(yù)包含所需要的 polyfill。注意 es6.promise 將被默認(rèn)包含,因?yàn)楝F(xiàn)在的庫依賴 Promise 是非常普遍的。
// babel.config.js
module.exports = {
  presets: [
    ['@vue/app', {
      polyfills: [
        'es6.promise',
        'es6.symbol'
      ]
    }]
  ]
}
  1. 將其添加到 vue.config.js 中的 transpileDependencies 選項(xiàng)。這會為該依賴同時開啟語法語法轉(zhuǎn)換和根據(jù)使用情況檢測 polyfill。

  2. 使用 useBuiltIns: 'entry' 然后在入口文件添加 import '@babel/polyfill'。這會根據(jù) browserslist 目標(biāo)導(dǎo)入所有 polyfill,這樣你就不用再擔(dān)心依賴的 polyfill 問題了,但是因?yàn)榘艘恍]有用到的 polyfill 所以最終的包大小可能會增加。

現(xiàn)代模式

有了 Babel 我們可以兼顧所有最新的 ES2015+ 語言特性,但也意味著我們需要交付轉(zhuǎn)譯和 polyfill 后的包以支持舊瀏覽器。這些轉(zhuǎn)譯后的包通常都比原生的 ES2015+ 代碼會更冗長,運(yùn)行更慢。

vue-cli-service build --modern

Vue CLI 提供了一個“現(xiàn)代模式”,會產(chǎn)生兩個應(yīng)用的版本:一個現(xiàn)代版的包,面向支持 ES modules 的現(xiàn)代瀏覽器,另一個舊版的包,面向不支持的舊瀏覽器。

了解更多:https://jdc.jd.com/archives/4911

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容