注:如下教程均在 windows 環境實現,使用其餘操做系統的同窗實踐過程可能會有些出入。html
在上一章 webpack 項目構建:(一)基本架構搭建 咱們搭建了一個最基本的 webpack 項目,如今讓咱們以此爲基礎,結合 babel,構建一個能夠運行最新 ES6 語法的 webpack 項目。node
在上一章,咱們搭建了一個以下結構的 webpack 項目:
webpack
並經過 webpack.config.js 的 entry 和 output 屬性,配置了 webpack 的打包規則:git
webpack.config.js
es6
即以當前目錄下的 index.js 爲打包入口,經過 webpack 打包構建,在當前目錄生成一個 test.js 文件。經過簡單的配置就能讓 webpack 正常工做了。
如今經過在當前目錄執行 webpack 打包命令,咱們就能獲得 test.js 文件了。
github
第一章中 index.js 文件作的事情很簡單,僅僅是聲明瞭一個值爲整型 123 的 test 變量。web
index.js
npm
在實際的環境中,這樣一段代碼完成的功能頗有限。如今讓咱們來擴展咱們的項目,使之能完成更強大的功能。segmentfault
如今讓咱們在瀏覽器裏打開 index.html 文件,等待一秒就會彈出信息爲 Hello word! 的彈窗。因而可知打包生成的 test.js 具備 index.js 同樣的功能。
這是由於 webpack 打包的本質,就是從入口文件出發,遞歸解析全部相關的依賴文件,並打包成一個或多個文件(bundle)。webpack 只是從新組織、精簡了你寫的代碼,並不會影響代碼的功能。webpack 的魅力也正是在於其強大的組織、優化代碼的能力。如今讓咱們一步步地深刻了解 webpack 的打包配置,一點點揭開 webpack 神祕的面紗。windows
ECMAScript6 實現了不少強大的新特性,藉助 ES6 咱們能用更加優雅的方式完成許多強大的功能。只是鑑於許多老版本的瀏覽器還沒有支持 ES6 語法,須要在使用以前轉換爲 ES5 語法,以使其兼容更多的瀏覽器。而完成這些轉換工做的就是 Babel 了。
Babel 本質就是一個 JavaScript 編譯器,經過:
就能夠完成 ES6 代碼到 ES5 代碼的轉換,固然轉換的過程會很複雜,咱們在這裏先了解一下基本的原理。想深刻了解的同窗能夠經過開發本身的 Babel Plugin,熟悉 AST 的操做流程。
Babel 自己的安裝使用是很簡單的,針對咱們當前的應用,咱們能夠經過以下過程實現:
瞭解了 Babel 的基本工做原理,如今讓咱們用 ES6 的新特性,稍微改寫一下咱們的 index.js:
index.js
在這裏咱們用了 ES6 的模板字符串和箭頭函數。模板字符串經過用反引號(`)標識字符串,能夠看成普通字符串使用,也能夠用來定義多行字符串,或者在字符串中嵌入變量。
在沒有配置 Babel 的狀況下,咱們經過 webpack 命令打包,能夠發現生成的 test.js 文件仍是用的 ES6 語法:
test.js
注:截圖部分是 test.js 的最後參數部分。
下面讓咱們看一下如何將 Babel 結合到 webpack 中,來實現 ES6 代碼到 ES5 代碼的轉換。
既然要將 webpack 和 Babel 結合在一塊兒,就須要在二者之間創建一條紐帶,而經過 webpack 的 loaders 就能夠生成這條紐帶,如今讓咱們修改咱們的 webpack.config.js 配置文件:
webpack.config.js
能夠看到咱們在這裏加了一段 module.rules 配置項,rules 數組裏的每一項就是一條 loader 使用規則,loader 用於對不一樣類型文件的源代碼進行轉換,可使你在 import 或"加載"模塊時預處理文件。
如今咱們配置的第一條規則,就是針對以 .js 結尾的文件使用 babel-loader。因爲如今咱們的項目中還不存在 babel-loader,讓咱們先經過 cnpm 安裝該模塊: cnpm i --save-dev babel-loader。
如今咱們已經準備好了 webpack、webpack 和 Babel 的紐帶,接下來就須要準備 Babel 的相關配置了。
在上一節已經介紹了單獨使用 Babel 的實現方法,可是在 webpack 中通常狀況下咱們不會主動調用 babel-core 解析 ES6 代碼,而是經過 babel-loader 在 webpack 編譯過程當中自動解析 ES6 代碼。那麼如今的問題就是在上一節使用 babel-core 的過程當中,咱們使用了 env 和 stage-0 兩個 preset,如今不使用 babel-core 了,這兩個 preset 又應該在哪裏配置?
這裏咱們有兩種方式能夠實現上述配置:
咱們採用第一種方式配置 .babelrc 文件,項目目錄結構以下:
如今讓咱們在當前目錄下執行 webpack 命令並查看生成的 test.js 文件,能夠發現咱們的 index.js 已經被轉換成 ES5 代碼了:
在瀏覽器中打開咱們的 index.html,發現打包出來的 test.js 能正常工做:
使用 webpack 搭建 ES6 編譯環境就講完了。下一章咱們開始搭建一個 webpack 開發環境。(webpack 項目構建:(三)開發環境——本地服務器搭建)