babel轉(zhuǎn)碼器耳奕,用于把es6的語法轉(zhuǎn)成瀏覽器支持的es5或者es3
babel轉(zhuǎn)換后的代碼是遵循commonJS規(guī)范的衅斩,而這個規(guī)范盆顾,瀏覽器并不能識別。因此導入到瀏覽器中會報錯畏梆,而nodeJS是commonJS的實現(xiàn)者您宪,所以在babel轉(zhuǎn)換后的代碼是可以在node中運行的奈懒。
為了將babel生成的commonJS規(guī)范的es5寫法能夠在瀏覽器上直接運行,我們可以使用webpack這個打包工具來完成宪巨,因為webpack本身也是遵循commonJS這個規(guī)范的
在es2015之前磷杏,js沒有模塊化的規(guī)范,Nodejs的CommonJS率先制定了js的模塊化標準捏卓,當然也是僅僅限制在Nodejs的服務器環(huán)境下使用
webpack如何安裝使用babel-loader极祸?(注意:新版本的Babel7中對官方提供的依賴使用了命名空間@babel)
1.下載
npm install babel-loader @babel/core @babel/preset-env --save-dev
2.安裝完上述內(nèi)容之后,需要設置一個.babelrc的文件放在根目錄下怠晴,內(nèi)容為
{
"presets": ["env"]
}
注:項目中現(xiàn)在一般直接使用babel-preset-env遥金,它整合了babel-preset-es2015, babel-preset-es2016, and babel-preset-es2017,而且可以配置需要支持的瀏覽器/運行環(huán)境蒜田,僅轉(zhuǎn)化需要支持的語法稿械,使文件更輕。
Babel默認只轉(zhuǎn)換新的JavaScript句法(syntax)冲粤,而不轉(zhuǎn)換新的API美莫,比如Iterator、Generator梯捕、Set厢呵、Maps、Proxy科阎、Reflect述吸、Symbol、Promise等全局對象锣笨,以及一些定義在全局對象上的方法(比如Object.assign)都不會轉(zhuǎn)碼蝌矛;如果想讓這個方法運行,必須使用babel-polyfill错英,為當前環(huán)境提供一個墊片入撒。
安裝命令如下。
$ npm install --save babel-polyfill
然后椭岩,在腳本頭部茅逮,加入如下一行代碼。
import 'babel-polyfill';
// 或者
require('babel-polyfill');