vue如何使用bable將es6轉(zhuǎn)譯為es5
為什么使用babel
ECMAScript 6(ES6)的發(fā)展速度非常之快,但現(xiàn)代瀏覽器對(duì)ES6新特性支持度不高,所以要想在瀏覽器中直接使用ES6的新特性就得借助別的工具來(lái)實(shí)現(xiàn)。
Babel是一個(gè)廣泛使用的轉(zhuǎn)碼器,babel可以將ES6代碼完美地轉(zhuǎn)換為ES5代碼,所以我們不用等到瀏覽器的支持就可以在項(xiàng)目中使用ES6的特性。
babel使用
1. 運(yùn)行以下命令安裝所需的包(package)
npm install --save-dev @babel/core @babel/cli @babel/preset-env
2.在項(xiàng)目的根目錄下創(chuàng)建一個(gè)命名為 babel.config.json 的配置文件(需要 v7.8.0 或更高版本)
并將以下內(nèi)容復(fù)制到此文件中:
{
"presets": [
[
"@babel/preset-env",
{
"targets": {
"edge": "17",
"firefox": "60",
"chrome": "67",
"safari": "11.1"
},
"useBuiltIns": "usage",
"corejs": "3.6.5"
}
]
]
}上述瀏覽器列表僅用于示例。請(qǐng)根據(jù)你所需要支持的瀏覽器進(jìn)行調(diào)整。
參見(jiàn) 此處 以了解 @babel/preset-env 可接受哪些參數(shù)。
如果你使用的是 Babel 的舊版本,則文件名為 babel.config.js。
const presets = [
[
"@babel/preset-env",
{
targets: {
edge: "17",
firefox: "60",
chrome: "67",
safari: "11.1",
},
useBuiltIns: "usage",
corejs: "3.6.4",
},
],
];
module.exports = { presets };3.插件和預(yù)設(shè)(preset)
代碼轉(zhuǎn)換功能以插件的形式出現(xiàn),插件是小型的 JavaScript 程序,用于指導(dǎo) Babel 如何對(duì)代碼進(jìn)行轉(zhuǎn)換。
你甚至可以編寫(xiě)自己的插件將你所需要的任何代碼轉(zhuǎn)換功能應(yīng)用到你的代碼上。
例如將 ES2015+ 語(yǔ)法轉(zhuǎn)換為 ES5 語(yǔ)法,我們可以使用諸如 @babel/plugin-transform-arrow-functions 之類(lèi)的官方插件:
npm install --save-dev @babel/plugin-transform-arrow-functions
現(xiàn)在,我們代碼中的所有箭頭函數(shù)(arrow functions)都將被轉(zhuǎn)換為 ES5 兼容的函數(shù)表達(dá)式了:
const fn = () => 1;
// converted to
var fn = function fn() {
return 1;
};這是個(gè)好的開(kāi)始!但是我們的代碼中仍然殘留了其他 ES2015+ 的特性,我們希望對(duì)它們也進(jìn)行轉(zhuǎn)換。我們不需要一個(gè)接一個(gè)地添加所有需要的插件,我們可以使用一個(gè) “preset” (即一組預(yù)先設(shè)定的插件)。
就像插件一樣,你也可以根據(jù)自己所需要的插件組合創(chuàng)建一個(gè)自己的 preset 并將其分享出去。
J對(duì)于當(dāng)前的用例而言,我們可以使用一個(gè)名稱(chēng)為 env 的 preset。
npm install --save-dev @babel/preset-env
如果不進(jìn)行任何配置,上述 preset 所包含的插件將支持所有最新的 JavaScript (ES2015、ES2016 等)特性。但是 preset 也是支持參數(shù)的。
我們來(lái)看看另一種傳遞參數(shù)的方法:配置文件,而不是通過(guò)終端控制臺(tái)同時(shí)傳遞 cli 和 preset 的參數(shù)。
配置
根據(jù)你的需要,可以通過(guò)幾種不同的方式來(lái)使用配置文件。另外,請(qǐng)務(wù)必閱讀我們關(guān)于如何 配置 Babel 的深入指南以了解更多信息。
其實(shí)vue 已經(jīng)引入了babel, 檢查package.json是否有依賴(lài) @vue/cli-plugin-babel,只需要配置babel.config.js 和 package.json里添加下面代碼
package.json
"browserslist": [
"> 1%",
"last 2 versions",
"not dead",
"Chrome 40.0", // 兼容低版本谷歌
"ie >= 9" // 兼容ie 9
].babel.config.js
module.exports = {
presets: [
// https://github.com/vuejs/vue-cli/tree/master/packages/@vue/babel-preset-app
'@vue/cli-plugin-babel/preset'
],
'env': {
'development': {
// babel-plugin-dynamic-import-node plugin only does one thing by converting all import() to require().
// This plugin can significantly increase the speed of hot updates, when you have a large number of pages.
'plugins': ['dynamic-import-node']
}
}
}實(shí)踐
1.在main.js中引入 ,一定要在最頂部引入
import "core-js/stable"; import "regenerator-runtime/runtime";
2.babel.config.js 配置
module.exports = {
presets: [
// '@vue/cli-plugin-babel/preset',
[
// '@babel/preset-env',
'@vue/app',
{
modules: 'commonjs',
useBuiltIns: 'entry',//entry usage
corejs: "3",
debug:true
}
]
],
sourceType: 'unambiguous'
// "plugins": [
// [
// "@babel/plugin-transform-runtime",
// {
// "corejs": 3 // 指定 runtime-corejs 的版本,目前有 2 3 兩個(gè)版本
// }
// ]
// ]
};ie中遇到的問(wèn)題
1.因?yàn)閣ebstorm格式化會(huì)在最后一個(gè)屬性后面加一個(gè),導(dǎo)致ie不兼容。
用eslint 格式化配置將最后一個(gè)逗號(hào)去掉。
在.eslintrc.js中加入
module.exports = {
root: true,
env: {
node: true,
},
extends: ["plugin:vue/essential", "eslint:recommended", "@vue/prettier"],
parserOptions: {
parser: "babel-eslint",
},
rules: {
"no-console": process.env.NODE_ENV === "production" ? "warn" : "off",
"no-debugger": process.env.NODE_ENV === "production" ? "warn" : "off",
'prettier/prettier': [
process.env.NODE_ENV === 'production' ? 'warn' : 'off',
{
singleQuote: true,
semi: false,
},
],
"comma-dangle": [1, "never"] // 這里就是格式化最后一個(gè)逗號(hào)
},
};2.因?yàn)轫?xiàng)目中用到了sm4等加密方式,babel并沒(méi)有將依賴(lài)轉(zhuǎn)義為es5。
所以我們還要再加一個(gè)配置,讓babel轉(zhuǎn)譯我們的依賴(lài)。
在vue.config.js中加入配置項(xiàng)
transpileDependencies: [
'sm-crypto',
'bpmn-js',
'bpmn-js-properties-panel',
'diagram-js',
'bpmn-moddle',
'@bpmn-io',
'@bpmn-io/element-templates-validator'
],總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
使用webpack搭建vue項(xiàng)目及注意事項(xiàng)
這篇文章主要介紹了使用webpack搭建vue項(xiàng)目的方法,本文以開(kāi)發(fā)環(huán)境為例,通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-06-06
vue使用Google地圖的實(shí)現(xiàn)示例代碼
這篇文章主要介紹了vue使用Google地圖的實(shí)現(xiàn)示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2018-12-12
解決使用Vue.js顯示數(shù)據(jù)的時(shí),頁(yè)面閃現(xiàn)原始代碼的問(wèn)題
下面小編就為大家分享一篇解決使用Vue.js顯示數(shù)據(jù)的時(shí),頁(yè)面閃現(xiàn)原始代碼的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-02-02
vue 實(shí)現(xiàn)移動(dòng)端鍵盤(pán)搜索事件監(jiān)聽(tīng)
今天小編就為大家分享一篇vue 實(shí)現(xiàn)移動(dòng)端鍵盤(pán)搜索事件監(jiān)聽(tīng),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-11-11
使用vite創(chuàng)建vue3之vite.config.js的配置方式
這篇文章主要介紹了使用vite創(chuàng)建vue3之vite.config.js的配置方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-08-08
el-table渲染慢卡頓問(wèn)題最優(yōu)解決方案
本文主要介紹了el-table渲染慢卡頓問(wèn)題最優(yōu)解決方案,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-08-08

