天天看點

webpack是什麼?和它的五個核心概念以及兩個打包模式webpack是什麼?webpack 的五個核心概念webpack 建立和使用webpack子產品化總結

webpack是什麼?

Webpack 是一種前端資源建構工具,一個靜态子產品打包器(module bundler)
在Webpack 看來,前端的所有資源檔案(js| json | css | img| sass…)都會作為子產品處理
它将根據子產品的依賴關系進行靜态分析,打包生成對應的靜态資源(bundle)
webpack是什麼?和它的五個核心概念以及兩個打包模式webpack是什麼?webpack 的五個核心概念webpack 建立和使用webpack子產品化總結

webpack 的五個核心概念

Enery

​入口(Enery)訓示 webpack 以那個檔案為入口起點開始打包,分析建構内部依賴圖

Output

​輸出(Output)訓示 webpack 打包後的資源 bundles 輸出到哪裡去,以及如何命名

Loader

Loader 讓 webpack 能夠去處理那些非JavaScript 檔案(webpack 自身隻了解JavaScript)

Plugins

​插件(Plugins)可以用于執行範圍更廣的任務,插件的範圍包括,從打包優化和壓縮,一直到重新定義環境中的變量

Mode

​區分開發環境和生産環境的編譯:development(開發環境)和production(生産環境)

​如何區分:

把process.env.NODE_ENV 的值設為 development是開發模式

​把process.env.NODE_ENV 的值設為 production是開發模式

webpack 建立和使用

建立:首先我們要建立一個目錄,然後初始化 npm 執行 npm init 一路回車,或npm init -y 生成一個package.json檔案, 然後在本地安裝 webpack ,接着安裝 webpack-cli

首先執行以下指令進行 webpack和webpack-cli 的全局安裝

npm install webpack webpack-cli -g
           

然後建立一個項目的檔案夾, 使用下面第一個指令進行初始化,生成package.json,執行第二指令進行webpack和webpack-cli的本地安裝

npm init -y
npm install webpack webpack-cli --save-dev
           

簡單的使用執行個體

建立一個webpack-dome檔案夾, 然後使用指令安裝webpack和webpack-cli

npm init -y
npm install webpack webpack-cli --save-dev
           
然後在這個項目檔案夾中建立一個src檔案夾和一個build檔案夾,在裡面建立兩個檔案, index.js和aa.js; index.js就是webpack的預設入口檔案,而aa.js是index.js中用來舉例引用的
webpack是什麼?和它的五個核心概念以及兩個打包模式webpack是什麼?webpack 的五個核心概念webpack 建立和使用webpack子產品化總結

aa.js中的内容為

export default {
    name:'張三',
    age:18
}
           

然後我們要輸入下面的指令進行打包操作

這是開發環境進行打包

webpack ./src/index.js -o ./build --mode=development
           

這是生産環境進行打包

webpack ./src/index.js -o ./build --mode=production
           
./src/index.js  指定入口檔案
-o    是指定輸出檔案的放置位置
./build 打包之後的檔案(最新版webpack會自動生成一個main.ja,main.ja就是打包後的代碼)
--mode=  是指定模式, development為開發模式, production 為生産模式
           

開發環境進行打包後的結果:

首先在npm中執行 webpack ./src/index.js -o ./build --mode=development 指令,執行完後為以下結果就代表你打包成功了

webpack是什麼?和它的五個核心概念以及兩個打包模式webpack是什麼?webpack 的五個核心概念webpack 建立和使用webpack子產品化總結
然後我們可以看到build檔案中會出現一個main.js這就是打包完後生成的代碼檔案
webpack是什麼?和它的五個核心概念以及兩個打包模式webpack是什麼?webpack 的五個核心概念webpack 建立和使用webpack子產品化總結

你可在build檔案夾中寫一個index.html,并引入打包後生成的main.js來檢視輸出後的結果,結果為:

webpack是什麼?和它的五個核心概念以及兩個打包模式webpack是什麼?webpack 的五個核心概念webpack 建立和使用webpack子產品化總結

生産環境的打包和開發環境的打包步驟一樣,不過main.js中的代碼不同,結果為:

webpack是什麼?和它的五個核心概念以及兩個打包模式webpack是什麼?webpack 的五個核心概念webpack 建立和使用webpack子產品化總結

webpack子產品化

在你開發完代碼後,進行打包時webpack并不強制你使用某種子產品化方案,而是通過相容所有子產品化方案讓你無痛接入項目;有了webpack,你可以随意選擇你喜歡的子產品化方案,至于怎麼處理子產品之間的依賴關系及如何按需打包,webpack會幫你處理好的。

webpack的子產品化有什麼特點?

1.可以相容多子產品風格,無痛遷移老項目。
2.一切皆子產品,js/css/圖檔/字型都是子產品。
3.靜态解析,按需打包,動态加載。

注意:在index.js檔案中引入css的檔案打包時會報錯,并且你引入的css效果不會生效,是以得出結果為webpack不能處理css/img的其他資源

注意:webpack打包時的指令:

開發環境 webpack ./src/index.js -o ./build --mode=development, webpack會以 ./src/index.js 為入口檔案開始打包,打包後輸出到 ./build 檔案夾中生成一個main.js代碼檔案,整體的打包環境, 是開發環境

生産環境 webpack ./src/index.js -o ./build --mode=production, webpack會以 ./src/index.js 為入口檔案開始打包,打包後輸出到 ./build 檔案夾中生成一個main.js代碼檔案,整體的打包環境, 是生産環境

總結

1.webpack 能處理js/json檔案, 不能處理css/img等其他資源

2.生産環境和開發環境能将ES6子產品化編譯成浏覽器能識别的子產品化

3.生産環境比開發環境多一個壓縮js代碼的功能

繼續閱讀