1. 程式人生 > >Webpack學習筆記三 ES6+語法降級為ES5

Webpack學習筆記三 ES6+語法降級為ES5

mod auto 多個 個人學習 learn 需要 ear 學習 方法

前言

此內容是個人學習筆記,以便日後翻閱。非教程,如有錯誤還請指出

Webpack 將es6、es7語法降級為es5

需要通過 babel JavaScript編譯器。

安裝: npm i babel-loader、@babel/core、@babel/preset-env

plugins:
@babel/plugin-proposal-decorators --save-dev
@babel/plugin-proposal-class-properties --save-dev
@babel/transform-runtime: 它允許重新使用Babel註入的幫助程序代碼來保存代碼大小 --save-dev
@babel/runtime 這個要安裝依賴到生產環境, 避免編譯輸出之間的重復 --save

如果你使用更高級的 ES6語法, 如 裝飾器 @autobind、類的修飾,方法的修飾,使用新的寫法定義類的屬性
都配置在 loader: ‘@bable-loader‘的options中

class N {
  name = qiqingfu;
  @autobind
  sayName() {
    console.log(this.name)
  }
}

const n = N()
n.name // qiqingfu
let { sayName } = n
sayName() // 1  修飾器@autobind  強制調用此函數以使其始終引用類實例

webpack配置:

module.exports = {
  ...
  module: {
    rules: [
      {
        test: /\.js$/,
        use: [
          {
            loader: ‘babel-loader‘,
            // babel-loader的一些配置選項
            options: {
              presets: [
                ‘@babel/preset-env‘   // 將es6轉換為 es5
              ],
              plugins: [
                ["@babel/plugin-proposal-decorators", { "legacy": true }],
                ["@babel/plugin-proposal-class-properties", { "loose" : true }]
                ["@babel/transform-runtime"]
              ]
            }
          }
        ]
      },
      {
        // eslint
        test: /\.js$/,
      }
    ]
  }
}

可以配置多個loader,下面 /.js$/可以再配置 eslint, loader的執行順序是自左向右,自下到上。所以需要先

ESLint

可組裝的 JavaScript和JSX檢查工具, 提供一個插件化的 JavaScript 代碼檢查工具。

Babel

Babel是一個工具鏈, 主要用於在舊的瀏覽器或環境中將 ECMAScript 2015+代碼轉換為向後兼容版本的。

  • Plugins
  • Presets

Plugins: 代碼轉換以插件的形式出現, 插件是小型的 JavaScript 程序, 它指示 Babel 如果對代碼進行轉換。

Presets: 如果想要轉換代碼中還有其它 ES2015+ 功能。可以使用 preset來代替預先設定的一組插件,
而不是逐一添加我們要想的插件。

筆記地址

Webpack學習筆記三 ES6+語法降級為ES5