天天看點

WEBPACK簡單學習筆記

文章目錄

webpack以前大概粗略看過,現在再回顧學習一下。

webpack是一個module bundler,個包含前端的項目,裡面可能有多個 .js, 多個 .css , 多個靜态圖檔, 多個其他前端資源。

一些 js 資源彼此之前存在依賴關系,當一個頁面需要加載多個 .js 的話,也會拖累整個頁面的加載速度。

是以為了解決這個問題, 如圖所示,webpack 就把左邊的各種各樣的靜态資源,打包成了一個所謂的 assets. 這樣浏覽器加載起來就快多了。

E:\project\webapack_demo      
cnpm install -g [email protected]      

之前已經裝過了,是以直接運作:

webpack      
WEBPACK簡單學習筆記

一堆參數,OK,webpack安裝完成。

在項目目錄下建立一個a.js,輸出“Hello webpack”。

document.write("hello webpack");      

運作打包指令:

webpack a.js bundle.js      
WEBPACK簡單學習筆記

這樣a.js就被打包到了bundle.js中

index.html中引用bundle.js:

<html>
    <head>
        <script src="bundle.js"></script>
    </head>
</html>      

直接用浏覽器打開index.html,

WEBPACK簡單學習筆記

上一個方式是把a.js打包,可以直接采用配置的方式。

webpack.config.js:

module.exports = {
  entry: './a.js',
  output: {
    filename: 'bundle.js'
  }
};      

再次運作:

直接就可以通路,和上一個效果一樣。

在前面是直接打開html,接下來用的webpack-dex-server是啟動一個伺服器的方式,從伺服器上打開index.html。

ebpack 是用 cnpm 安裝的 1.32.2,考慮到相容性, webpack-dev-server 也不會安裝最新版本,而是與之相容的版本: [email protected]

運作如下指令進行全局安裝

cnpm install -g [email protected]      
webpack-dev-server --open      

會自動打開與 http 協定關聯的浏覽器,并顯示預設的 index.html 頁面。

WEBPACK簡單學習筆記
WEBPACK簡單學習筆記

webpack-dev-server 支援熱更新。 所謂的熱更新,即在 webpack.config.js 中的 entry 檔案 ( a.js ) 發生了改變之後,會自動運作 webpack, 并且自動重新整理頁面,立即看到修改之後的效果。

為了做到這一點,需要修改 webpack.config.js 檔案。

var webpack = require('webpack')      

因為 webpack 子產品是全局的,在某些情況下,通過這種方式導入不能夠被識别,需要進行一次連結:

npm link webpack      

不然,

WEBPACK簡單學習筆記

把 webpack.config.js 檔案的内容更新:

var webpack = require('webpack')
module.exports = {
    entry: './a.js',
    output: {
        filename: 'bundle.js'
    },
   plugins:[
        new webpack.HotModuleReplacementPlugin()
    ],
   devServer: {
        port:8088,
        inline:true,
        hot:true
    }
}      

重新啟動,

WEBPACK簡單學習筆記

修改a.js中的内容,可以實時看到浏覽器更新。

WEBPACK簡單學習筆記

前面的方式,是直接運作 webpack-dev-server 的方式,不過大都數的項目,都會通過npm 的方式運作。

運作如下指令進行 package.json 配置檔案的初始化

npm init -y      

-y 的意思是都同意~ 就不用挨個挨個手動敲打回車了

WEBPACK簡單學習筆記

在package.json中增加腳本:“dev”: "webpack-dev-server --open"

{
  "name": "webpack-demo",
  "version": "1.0.0",
  "main": "a.js",
  "scripts": {
    "dev": "webpack-dev-server --open"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "dependencies": {
    "webpack": "^1.13.2"
  },
  "devDependencies": {},
  "description": ""
}      

通路測試位址:

http://localhost:8088/
WEBPACK簡單學習筆記

有時候,會不止一個js檔案,這時候就需要配置多個入口檔案。

修改a.js:

document.write("hello webpack from a.js<br>");      

建立b.js:

document.write("hello webpack from b.js<br>");      

修改配置檔案webpack.config.js:

module.exports = {
    entry: {
        bundle1: './a.js',
        bundle2: './b.js'
    },
    output: {
        filename: '[name].js'
    },
    devServer: {
        port:8088
    }
}      

修改 index.html:

分别引用兩個打包後的檔案:

<html>
    <head>
        <script src="bundle1.js"></script>
        <script src="bundle2.js"></script>       
    </head>
</html>      

運作測試:

WEBPACK簡單學習筆記
WEBPACK簡單學習筆記

ES6 的全稱是 ECMAScript 6.0,是下一代的 javascript 語言标準。

因為目前 javascript 标準 (ES5) 對于開發大型的 javascritp 應用支援力度不足夠,是以才會推出一個 ES6,期望 js 在大型企業開發領域也有所斬獲。(這玩意兒以前真沒見過)

運作如下指令進行安裝。

npm install --save-dev [email protected] [email protected] [email protected]      
WEBPACK簡單學習筆記

文法使用 ES6 的寫法,這個是無法直接在 浏覽器使用的,需要轉換為 ES5 才能夠使用。

const name = 'ES6'
document.write(`hello ${name}`)      
module.exports = {
    entry: './a.js',          //入口
    output: {
        filename: 'bundle.js'    //出口
    },
    devServer: {
        port:8088
    },
    module: {
        loaders: [
            {
                test: /\.js$/,            //表示僅僅轉換 .js 檔案
                loader: 'babel',          //使用babel loader進行 es6 轉換
                query:{ 
                    presets: ['latest']     //latest 表示用最新的文法規則進行
                }
            }
        ]
    }
}      
html>
    <head>
        <script src="bundle.js"></script>
    </head>
</html>      

首先運作 webpack, 會把 a.js 轉換為 bundle.js 。

npm run dev      
WEBPACK簡單學習筆記

行,webpack先搞到這吧。見過兩三次,還真沒用過,以後用到的時候再接着學。

webpack中文文檔

參考:

【1】、

http://how2j.cn/k/webpack/webpack-start/1776.html

【2】、

http://how2j.cn/k/webpack/webpack-config/1777.html

【3】、

http://how2j.cn/k/webpack/webpack-npm/1783.html

【4】、

http://how2j.cn/k/webpack/webpack-webpack-dev-server/1778.html

【5】、

http://how2j.cn/k/webpack/webpack-multiple-entry/1779.html

【6】、

http://how2j.cn/k/webpack/webpack-babal-loader/1780.html

繼續閱讀