1. 程式人生 > >【webpack】使用webpack進行ES6開發

【webpack】使用webpack進行ES6開發

本文主要介紹webpack的基本原理以及基於webpack搭建前端專案工程化解決方案的思路。
目錄:

  1. 為什麼要用webpack
  2. webpack的安裝
  3. webpack的配置
  4. github上的小例子

    1、webpack入門

    Webpack將專案中用到的一切靜態資源都視之為模組,模組之間可以互相依賴。Webpack對它們進行統一的管理以及打包釋出,其官方主頁用下面這張圖來說明Webpack的作用:
    這裡寫圖片描述

        Webpack的目標就是對專案中的靜態資源進行統一管理,為產品的最終釋出提供最優的打包部署方案。
Webpack出自facebook的Instagram團隊,在網上找到了比較好的對它主要特性的歸納,如下:

  1. webpack 是以 commonJS 的形式來書寫指令碼滴,但對 AMD/CMD 的支援也很全面,方便舊專案進行程式碼遷移。
  2. 能被模組化的不僅僅是 JS 了。
  3. 開發便捷,能替代部分 grunt/gulp 的工作,比如打包、壓縮混淆、圖片轉base64等。
  4. 擴充套件性強,外掛機制完善,特別是支援 React 熱插拔(見 react-hot-loader )的功能讓人眼前一亮。

2、webpack的安裝

首先,建立目錄檔案,這裡為了介紹方便,建立一個簡單的如下的目錄:

/web根目錄
-es6
   main.js
   Person.js
index.html
webpack.config.js

        es6 裡面存放的是 ES6 風格的程式碼,main.js 是入口檔案, index.html 是首頁, webpack.config.js 是 webpack 的配置檔案。
首先要安裝node,接著在命令列,進入你的目錄,輸入如下命令:

npm install webpack -g 
npm install webpack --sava-dev

使用 babel 對 ES6 風格的程式碼進行轉換,所以要安裝babel-loader 載入器,在命令列輸入如下命令:

npm install babel-loader --save-dev
//安裝 babel-loader npm install babel-preset-es2015 --sava-dev //安裝轉碼規則

3、webpack配置

開啟 webpack.config.js,編輯如下:

var path = require('path');
module.exports = {
  entry: "./es6/main.js",//入口檔案
  output: {//打包輸出的檔案
    path: __dirname,
    filename: "bundle.js"
  },
  module: {
    loaders: [
      {
        test: path.join(__dirname, 'es6'),
        loader: 'babel-loader',
        query: {
          presets: ['es2015']
        }
      }
    ]
  },
  resolve: {// 現在你require檔案的時候可以直接使用require('file'),不用使用require('file.coffee')
    extensions: ['', '.js', '.json', '.coffee']
  }
}

module.exports匯出的物件即是 webpack 的配置物件,其中:

entry 是入口檔案
output 是輸出檔案,這裡的 filename 給的是 bundle.js,也就是當 webpack 執行完之後將生成一個 bundle.js 檔案
loaders 是使用到的所有載入器,在 gulp 裡面我們都是使用的是 gulp 的一些外掛比如 gulp-rename、gulp-concat 等等,在 webpack 裡面類似,使用的是各種 loaders,詳細的 loaders 列表在這裡

4、相關程式碼

/es6/main.js

import Person from './Person.js';

let p = new Person ('張三',20);
document.write(p.say());

index.html
在這裡就可以直接引用 bundle.js 了。

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8"/>
    <title>測試頁面</title>
</head>
<body>
    <script src="bundle.js"></script>
</body>
</html>

詳情請移步github ES6學習

我最初接觸webpack是因為之前在實習的時候,要用react,當時接觸過webpak,當時的配置是師父配置的,具體配置見 之前部落格