使用webpack將ES6轉(zhuǎn)化ES5的實(shí)現(xiàn)方法
babel使用
打開babel官網(wǎng),按教程安裝babel
安裝
npm install --save-dev babel-loader @babel/core @babel/preset-env
配置rules
module: {
rules: [
{ test: /\.js$/, exclude: /node_modules/, loader: "babel-loader" }
]
}
生成 .babelrc文件
{
"presets": ["@babel/preset-env"]
}
此時(shí)webpack已經(jīng)能正確的將高版本的js語(yǔ)法轉(zhuǎn)為低版本的語(yǔ)法,但是對(duì)于新增的api并不會(huì)轉(zhuǎn)化,如promise。這時(shí)我們就需要其他的插件
使用polyfill插件,對(duì)于babel=>7.4.0該方法棄用
安裝
npm install --save @babel/polyfill
修改 .babelrc
{
"presets": [
[
"@babel/preset-env",
{
"useBuiltIns":"usage" // 只轉(zhuǎn)化使用了的API
}
]
]
}
使用 在需要轉(zhuǎn)換的文件里引入polyfill
import "@babel/polyfill";
@babel/polyfill 和 @babel/preset-env 的關(guān)系
@babel/preset-env 中與 @babel/polyfill 的相關(guān)參數(shù)有 targets 和 useBuiltIns 兩個(gè)
targets: 支持的目標(biāo)瀏覽器的列表
useBuiltIns: 參數(shù)有 “entry”、”usage”、false 三個(gè)值。默認(rèn)值是false,此參數(shù)決定了babel打包時(shí)如何處理@babel/polyfilll 語(yǔ)句。
“entry”: 會(huì)將文件中 import‘@babel/polyfilll'語(yǔ)句 結(jié)合 targets ,轉(zhuǎn)換為一系列引入語(yǔ)句,去掉目標(biāo)瀏覽器已支持的polyfilll 模塊,不管代碼里有沒有用到,只要目標(biāo)瀏覽器不支持都會(huì)引入對(duì)應(yīng)的polyfilll 模塊。
“usage”: 不需要手動(dòng)在代碼里寫import‘@babel/polyfilll',打包時(shí)會(huì)自動(dòng)根據(jù)實(shí)際代碼的使用情況,結(jié)合 targets 引入代碼里實(shí)際用到 部分 polyfilll 模塊
false: 對(duì) import‘@babel/polyfilll'不作任何處理,也不會(huì)自動(dòng)引入 polyfilll 模塊
安裝
npm install --save-dev @babel/plugin-transform-runtime
修改 .babelrc
{
"presets": [
[
"@babel/preset-env"
]
],
"plugins": [
[
"@babel/plugin-transform-runtime",
{
"absoluteRuntime": false,
"corejs": 3,
"helpers": true,
"regenerator": true,
"useESModules": false
}
]
]
}
注意上面corejs設(shè)置項(xiàng),不同的值需要不同的依賴包
| corejs的值 | 需要安裝的依賴包 |
|---|---|
| false | npm install --save @babel/runtim |
| 2 | npm install --save @babel/runtime-corejs2 |
| 3 | npm install --save @babel/runtime-corejs3 |
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
JavaScript優(yōu)雅處理對(duì)象的6種方法
大家好,本篇文章主要講的是JavaScript優(yōu)雅處理對(duì)象的6種方法,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下哦,方便下次瀏覽2021-12-12
判斷用戶的在線狀態(tài) onbeforeunload事件
window.event.clientX和window.event.clientY 將捕捉當(dāng)前事件發(fā)生時(shí)鼠標(biāo)相對(duì)與窗口的桌面坐標(biāo),通常情況下IE的關(guān)閉按鈕都會(huì)在頁(yè)面的右上部分,所以點(diǎn)關(guān)閉的時(shí)候鼠標(biāo)的坐標(biāo)的Y坐標(biāo)一定是小于0的2011-03-03
javascript調(diào)試之DOM斷點(diǎn)調(diào)試法使用技巧分享
在開發(fā)中,偶爾會(huì)遇到類似這樣的問題:頁(yè)面上的一個(gè)DOM元素被改了屬性,但是我們卻不知道是哪個(gè)腳本更改的2014-04-04
詳述 Sublime Text 打開 GBK 格式中文亂碼的解決方法
這篇文章主要介紹了詳述 Sublime Text 打開 GBK 格式中文亂碼的解決方法,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2017-10-10
JavaScript實(shí)現(xiàn)指定數(shù)量的并發(fā)限制的示例代碼
這篇文章主要介紹了JavaScript實(shí)現(xiàn)指定數(shù)量的并發(fā)限制的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-03-03

