webpack運行Babel教程

摘要: Babel是轉碼器,webpack是打包工具,它們應該如何一塊兒使用呢?javascript

ES6 + IE10 = 語法錯誤!

test.js使用了ES6的箭頭函數html

setTimeout(() =>
{
    console.log("Hello, Fundebug!");
}, 100)
複製代碼

因爲低版本的瀏覽器沒有支持ES6語法,這就意味着代碼會出錯。例如,在IE 10瀏覽器中,會出現"語法錯誤":前端

若是你使用了Fundebug錯誤監控服務,則會收到這樣的報錯:java

直接使用babel轉碼

當你使用更高版本的JavaScript語法時,好比ES7,低版本的瀏覽器將沒法運行。爲了兼容低版本的瀏覽器,好比萬惡的IE,咱們不得不使用Babel,將ES六、ES7等高版本代碼轉換爲ES5代碼。node

安裝babel-cli

sudo npm install --global babel-cli
複製代碼

使用babel命令轉碼

babel test.js --out-file compiled.js
複製代碼

轉碼以後生成的代碼爲compiled.jswebpack

setTimeout(function () {
    console.log("Hello, Fundebug!");
}, 100);
複製代碼

可知,箭頭函數轉換成了function,這樣就代碼能夠在IE 10等不支持ES6的瀏覽器上正確執行了。git

廣告:歡迎免費試用Fundebug,助您第一時間發現代碼BUG。es6

使用webpack運行Babel

通常項目中都會使用webpack對代碼進行打包,好比,將多個js文件打包成1個js文件,這樣能夠減小前端的資源請求。所以,咱們須要將Babel也集成到webpack中。github

安裝webpack

npm install --global webpack
複製代碼

我使用的webpack版本爲4.10.0web

webpack --version
4.10.0
複製代碼

安裝babel

npm install --save-dev babel-cli babel-preset-env
複製代碼

babel-preset-env是Babel新版的preset,它可讓咱們靈活地設置代碼目標執行環境,好比只支持各個瀏覽器最新的2個版本,支持IE8及其以上的IE瀏覽器。

安裝babel-loader

npm install --save-dev babel-loader
複製代碼

babel-loader是webpack的babel插件,它讓咱們能夠在wepback中運行Babel。

配置babel

新增.babelrc文件:

{
    "presets": ["env"]
}
複製代碼

配置webpack

新增webpack.config.js文件:

module.exports = {
    entry: './test.js',
    output:
    {
        path: __dirname,
        filename: 'bundle.js'
    },
    module:
    {
        rules: [
        {
            test: /\.js$/,
            exclude: /node_modules/,
            loader: 'babel-loader'
        }]
    }
};
複製代碼

可知,咱們在webpack中使用了babel-loader插件來運行Babel,轉換全部的.js代碼(除了node_modules中的代碼)。

使用webpack運行babel

webpack --mode production
複製代碼

轉換以後的代碼爲bundle.js。bundle.js只有1行代碼,這是由於爲咱們指定的mode爲production,webpack爲了壓縮代碼只生成了1行代碼。

參考

關於Fundebug

Fundebug專一於JavaScript、微信小程序、微信小遊戲、支付寶小程序、React Native、Node.js和Java實時BUG監控。 自從2016年雙十一正式上線,Fundebug累計處理了7億+錯誤事件,獲得了Google、360、金山軟件、百姓網等衆多知名用戶的承認。歡迎免費試用!

版權聲明

轉載時請註明做者Fundebug以及本文地址:
blog.fundebug.com/2018/06/13/…

相關文章
相關標籤/搜索