1. 程式人生 > >webpack 介紹 & 安裝 & 常用命令

webpack 介紹 & 安裝 & 常用命令

webpack 介紹 & 安裝 & 常用命令

webpack系列目錄

本系列並非全部原創,如非原創,正文篇首會註明轉載地址

正文

Webpack是一款使用者打包前端模組的工具,它將根據模組的依賴關係進行靜態分析,然後將這些模組按照指定的規則生成對應的靜態資源。主要是用來打包在瀏覽器端使用的javascript的。同時也能轉換、捆綁、打包其他的靜態資源,包括css、image、font file、template等

市面已存在大量的模組管理和打包工具,為什麼還重複造輪子,webpack有什麼特色?

這些已有的模組化工具並不能很好的完成如下的目標:

  • 將依賴樹拆分成按需載入的塊
  • 初始化載入的耗時儘量少
  • 各種靜態資源都可以視作模組
  • 將第三方庫整合成模組的能力
  • 可以自定義打包邏輯的能力
  • 適合大專案,無論是單頁還是多頁的 Web 應用

webpack 特點

程式碼拆分
Webpack 有兩種組織模組依賴的方式,同步和非同步。非同步依賴作為分割點,形成一個新的塊。在優化了依賴樹後,每一個非同步區塊都作為一個檔案被打包。
Loader
Webpack 本身只能處理原生的 JavaScript 模組,但是 loader 轉換器可以將各種型別的資源轉換成 JavaScript 模組。這樣,任何資源都可以成為 Webpack 可以處理的模組。
智慧解析
Webpack 有一個智慧解析器,幾乎可以處理任何第三方庫,無論它們的模組形式是 CommonJS、 AMD 還是普通的 JS 檔案。甚至在載入依賴的時候,允許使用動態表示式 require("./templates/" + name + ".jade")。
外掛系統


Webpack 還有一個功能豐富的外掛系統。大多數內容功能都是基於這個外掛系統執行的,還可以開發和使用開源的 Webpack 外掛,來滿足各式各樣的需求。
快速執行
Webpack 使用非同步 I/O 和多級快取提高執行效率,這使得 Webpack 能夠以令人難以置信的速度快速增量編譯。

總結下來其主要的優勢:

  1. 按需載入模組,按需進行懶載入,在實際用到某些模組的時候再增量更新
  2. webpack 是以 commonJS 的形式來書寫指令碼,但對 AMD/CMD 的支援也很全面,方便舊專案進行程式碼遷移。
  3. 能被模組化的不僅僅是 JS 了,能處理各種型別的資源。
  4. 開發便捷,能替代部分 grunt/gulp 的工作,比如打包、壓縮混淆、圖片轉base64等。
  5. 擴充套件性強,外掛機制完善

安裝

首先要安裝 Node.js, Node.js 自帶了軟體包管理器 npm
用npm 安裝webpack

$ npm install webpack -g

此時 Webpack 已經安裝到了全域性環境下,可以通過命令列 webpack -h 檢視相關指令

通常我們會將webpack安裝到專案依賴,這樣就可以使用本地版本的webpack

//進入專案目錄
//確定已有package.json,沒有就npm init 建立
$ npm install webpack --save-dev

//檢視webpack 版本資訊
$ npm info webpack
//安裝指定版本
$ npm install [email protected]1.31.x --save-dev

如果要使用webpack開發工具,要單獨安裝 webpack-dev-server

$ npm install webpack-dev-server --save-dev

常用命令

webpack

構建命令,webpack的常用引數

$ webpack --config webpack.min.js //另一份配置檔案

$ webpack --display-error-details //顯示異常資訊

$ webpack --watch   //監聽變動並自動打包
 
$ webpack -p    //壓縮混淆指令碼,這個非常非常重要!
 
$ webpack -d    //生成map對映檔案,告知哪些模組被最終打包到哪裡了

webpack-dev-server

webpack-dev-server是一個小型的node.js Express伺服器,它使用webpack-dev-middleware中介軟體來為通過webpack打包生成的資原始檔提供Web服務。它還有一個通過Socket.IO連線著webpack-dev-server伺服器的小型執行時程式。webpack-dev-server傳送關於編譯狀態的訊息到客戶端,客戶端根據訊息作出響應。

webpack-dev-server有兩種模式支援自動重新整理——iframe模式和inline模式

  • 在iframe模式下:頁面是巢狀在一個iframe下的,在程式碼發生改動的時候,這個iframe會重新載入
  • 在inline模式下:一個小型的webpack-dev-server客戶端會作為入口檔案打包,這個客戶端會在後端程式碼改變的時候重新整理頁面

使用iframe模式,無需額外配置,只需在瀏覽器輸入

http://localhost:8080/webpack-dev-server/index.html

使用inline模式有兩種方式:命令列和nodejs API

  1. 命令列: 在執行時,加上 --inline 選項

    $ webpack-dev-server --inline

    訪問,通過http://localhost:8080 就可以訪問

  2. nodejs API 方式 ,需要手動把 webpack-dev-server/client?http://localhost:8080 加到配置檔案的入口檔案處

webpac-dev-server支援Hot Module Replacement,即模組熱替換,在前端程式碼變動的時候無需整個重新整理頁面,只把變化的部分替換掉

下章,就開始利用 Webpack 實現 前端專案的 自動構建部署!!

相關推薦

webpack 介紹 & 安裝 & 常用命令

webpack 介紹 & 安裝 & 常用命令 webpack系列目錄 本系列並非全部原創,如非原創,正文篇首會註明轉載地址 正文 Webpack是一款使用者打包前端模組的工具,它將根據模組的依賴關係進行靜態分析,然後將這些模組按照指定的規則生成對應的靜態資源。主要是用來打包在瀏覽器端使用

webpack安裝及解除安裝常用命令

##安裝(推薦區域性安裝) npm install webpack -g //-g 代表全域性安裝 npm install webpack -s //-s 代表區域性安裝 #安裝 npm install --save-dev webpack -s

redis學習(二) redis資料結構介紹以及常用命令

redis資料結構介紹   我們已經知道redis是一個基於key-value資料儲存的資料結構資料庫,這裡的key指的是string型別,而對應的value則可以是多樣的資料結構。其中包括下面五種型別:   1.string 字串    string字串型別是redis最基礎的資料儲存型別。

docker的介紹以及常用命令

sof -m sta 及其 item 虛擬化 -s 主機系統 ges 一、docker的介紹 1. Docker是什麽? Docker 是一個開源的應用容器引擎,讓開發者可以打包他們的應用以及依賴包到一個可移植的容器中,然後發布到任何流行的Linux機器上,也可以實現虛擬化

linux安裝常用命令工具包wget,cmake等

1.安裝gcc等必備程式包(已安裝則略過此步) yum install -y gcc gcc-c++ make automake 2.安裝wget (已安裝則略過此步) yum insta

maven介紹常用命令

1、maven的用途   maven是主要服務基於java平臺的專案構建,依賴管理和專案資訊管理的一個工具。專案構建包括清理,編譯,測試到生成測試報告,再到打包和部署;依賴管理是maven藉助於座標來實現的。maven是跨平臺的,可以在windows,linu

編輯神器Vi介紹常用命令

1 vi 簡介 vi 編輯器是 Linux 和 Unix 上最基本的文字編輯器,工作在字元模式下。由於不需要圖 形介面,vi 是效率很高的文字編輯器。儘管在 Linux 上也有很多圖形介面的編輯器可用, 但 vi 在系統和伺服器管理中的功能是那些圖形編輯器所無法比擬的。 v

curl工具介紹常用命令

curl是利用URL語法在命令列方式下工作的開原始檔傳輸工具。它被廣泛應用在Unix、Linux發行版中,並且有DOS和Win32、Win64的移植版本。curl是一個利用URL規則在命令列下工作的文字傳輸工具。它支援上傳和下載,所以是綜合傳輸工具,但按傳統,習

docker-compose介紹常用命令

compose專案簡介 compose專案主要用於編排部署基於docker的應用。compose主要用於開發/測試場合。適合小規模應用的部署。compose以命令列方式執行,本身沒有daemon。只提供應用編排部署的能力。 相對於kubernetes來說功能比較簡單,相當於kubernetes的一個子集。

ubuntu 系統 anaconda 虛擬環境下各種包的安裝常用命令

在anaconda中,有多種安裝包的方式,此處只總結命令列(最為有效的方式)一、系統自帶的python 環境下:線上安裝:$ conda install <包名稱> 離線安裝 :$ pip

linux安裝系統分區詳細介紹常用ls命令

自動分區 fff 英語基礎 沒有 擁有 inux 文件夾 swap user linux對於沒有基礎的初學者來說,最難的就是第一步,不為什麽因為萬事開頭難,第一步就是裝系統分區,而這裏面最難的我認為就是分區部分,如果是讓系統自動分區那就很簡單,但對於初學者一般都是要手動分區

Linux系統Vi/Vim編輯器的簡單介紹安裝/卸載、常用命令

菜鳥 3.3 移動 左移 str file 所在 最後一行 簡單 Linux系統Vi/Vim編輯器的簡單介紹、安裝/卸載、常用命令 1、介紹 vi(Visual Interface)編輯器是Linux和Unix上最基本的文本編輯器,工作在字符模式下。由於不需要圖形界面,

docker compose安裝常用命令介紹 及使用docker-compose執行一個進銷存管理系統

使用微服務架構的應用系統一般包含若干個微服務,每個微服務一般都會部署多個例項。如果每個微服務都要手動啟停,那麼效率之低,維護量之大可想而知 docker compose 是一個用於定義和執行多容器docker應用程式的工具   安裝: 下在並安裝適應系統版本的compose

Ubuntu(14.04LTS)安裝anaconda及常用命令介紹

首先是選擇安裝的版本:https://www.anaconda.com/download/#linux,這裡提供兩個版本,預設安裝的Python分別是2.7和3.7(截至2018年11月27日10:49:33)。 考慮到以後需要用到TensorFlow,喵哥推薦使用anaconda2,即預

redis學習筆記01 — 基本介紹安裝配置及常用命令

redis——NoSQL的一種 為了解決高併發、高可用、高擴充套件、大資料儲存等一系列問題而產生的資料庫解決方案,就是NoSQL NoSQL,非關係型資料庫,全名:Not Only Sql,它不能代替關係型資料庫,只能作為關係型資料庫的一個良好補充。 redis 簡介 是使用

Git使用:安裝,使用及常用命令整理

reset short 配置文件 res 命名 nbsp class 名詞 如果 對於程序猿而言,git是最常接觸的工具之一,因此需要熟練快速掌握其技巧。 git安裝: windwos: 【原創】Windows平臺下Git的安裝與配置 Ubuntu:git與github在

docker虛擬化安裝配置與常用命令

sta 80端口 ubuntu map 虛擬化 導出 6.5 關系 版本 一、Docker安裝配置 docker只有在centos6.5以上機器才能使用yum直接安裝,如果其他版本需要安裝centos擴展源epel。 docker官方文檔說要求Linux kernel至

Linux常用命令(四)程序的安裝與管理

rpm 編譯安裝 侯良金 linux 安裝軟件 Linux常用命令(四)程序的安裝與管理一、Linux應用程序基礎1、Linux應用程序的組成■普通的可執行程序文件。一般保存在“/usr/bin”目錄中,普通用戶即可執行。■服務器程序、管理程序文件。一般保存在“/usr/sbin”

windows下 安裝 rabbitMQ 及操作常用命令(轉)

點擊 結束 進程 重啟 開始 use 完成 題解 五類 windows下 安裝 rabbitMQ 及操作常用命令 rabbitMQ是一個在AMQP協議標準基礎上完整的,可服用的企業消息系統。它遵循Mozilla Public License開源協議,采用 Erlang

windows下 安裝 rabbitMQ 及操作常用命令

log 控制臺命令 讀寫權限 ofo 下載 分享 monitor perm 服務 rabbitMQ是一個在AMQP協議標準基礎上完整的,可服用的企業消息系統。它遵循Mozilla Public License開源協議,采用 Erlang 實現的工業級的消息隊列(MQ)服務器