webpack 簡介

Paste_Image.png

webpack的優(yōu)點(diǎn)

代碼拆分

webpack有兩種組織代碼的方式 一種是同步一種是異步。異步依賴作為分割點(diǎn),形成一個(gè)新的塊。在優(yōu)化過了依賴樹后,每一個(gè)異步區(qū)塊都作為一個(gè)文件被打包。

loader

webpack 本身只處理原生的js,但是loader轉(zhuǎn)化器可以將各種資源轉(zhuǎn)換成為js模塊。這樣任何資源都可以成為 webpack的處理對(duì)象。比如處理css的cssloader,處理coffeescript coffeesecriptloader。

智能解析

webpack是一個(gè)智能解析器,可以處理幾乎任何第三方的庫,無論他們的模塊形式是commonjs,amd 還是普通的js文件。甚至加載依賴的時(shí)候可以動(dòng)態(tài)表達(dá)式

require("./templates/" + name + ".jade")

插件系統(tǒng)

webpack有豐富的插件系統(tǒng)。大多數(shù)的功能都可以通過這個(gè)插件系統(tǒng)運(yùn)行。還可以開發(fā)和使用開源的webpack的插件,來滿足各式各樣的需求。

安裝

首先要安裝 Node.js, Node.js 自帶了軟件包管理器 npm,Webpack 需要 Node.js v0.6 以上支持,建議使用最新版 Node.js。
用 npm 安裝 Webpack:

$ npm install webpack -g

此時(shí) Webpack 已經(jīng)安裝到了全局環(huán)境下,可以通過命令行 webpack -h
試試。

通常我們會(huì)將 Webpack 安裝到項(xiàng)目的依賴中,這樣就可以使用項(xiàng)目本地版本的 Webpack。

進(jìn)入項(xiàng)目目錄,確定已經(jīng)有 package.json,沒有就通過 npm init 創(chuàng)建安裝 webpack 依賴

npm install webpack --save-dev

Webpack 目前有兩個(gè)主版本,一個(gè)是在 master 主干的穩(wěn)定版,一個(gè)是在 webpack-2 分支的測試版,測試版擁有一些實(shí)驗(yàn)性功能并且和穩(wěn)定版不兼容,在正式項(xiàng)目中應(yīng)該使用穩(wěn)定版。
查看 webpack 版本信息

$ npm info webpack

如果需要使用 Webpack 開發(fā)工具,要單獨(dú)安裝:

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

loader

webpack本身只處理javascript, 如果要處理其他的類型要引用不同的loader。

1.loader可以以管道的方式連接
2.同步或者異步執(zhí)行
3.接受參數(shù)
4.運(yùn)行在nodejs的環(huán)境中,所以可以做任何的事情
5.loader可以通過文件擴(kuò)展名(或正則表達(dá)式)綁定給不同的文件
6.loader通過npm安裝
7.loader可以訪問配置
8.可以require引用模塊的時(shí)候使用,也可以在webpack的全局配置中指定,還可以通過命令行來執(zhí)行。
9.插件可以使loader具有更多的屬性

通過require來使用loader
例如引用一個(gè)css文件

/*style.css*/
body {
  background: #fef;
}
require('style!css! ./style.css');//載入css文件

安裝loader

npm install css-loader style-loader

通過命令行來指定配置

webpack entry.js bundle.js --module-bind 'css=style!css'

webpack配置文件

var webpack = require('webpack')
module.exports = { 
    entry: './entry.js',
   output: { path: __dirname, filename: 'bundle.js' },
   module: { 
        loaders: [ {test: /\.css$/, loader: 'style!css'} 
      ] 
   }
}

默認(rèn)webpack.config.js

這樣就直接執(zhí)行webpack就好了,css文件就直接調(diào)用好了

require('./style.css');

plugin

插件可以完成更多l(xiāng)oader不可以實(shí)現(xiàn)的功能。

webpack內(nèi)置了很多的插件,這里我們利用webpack的BannerPlugin,這個(gè)插件的作用是給輸出文件添加注釋頭。
具體配置如下:

var webpack = require('webpack')

module.exports = {
  entry: './entry.js',
  output: {
    path: __dirname,
    filename: 'bundle.js'
  },
module: {
  loaders: [
    {test: /\.css$/, loader: 'style!css'}
  ]
},
plugins: [
  new webpack.BannerPlugin('這是一個(gè)注釋頭')
]
}

webpack的開發(fā)環(huán)境

當(dāng)項(xiàng)目逐漸變大了,webpack的時(shí)間會(huì)越來越長,通過參數(shù)可以讓編譯的內(nèi)容帶顏色和進(jìn)度。

webpack --progress --colors

每次修改都需要編譯,可以開啟監(jiān)聽模式,那么每次更改自動(dòng)更新。

webpack --progress --colors --watch

當(dāng)然,使用 webpack-dev-server
開發(fā)服務(wù)是一個(gè)更好的選擇。它將在 localhost:8080 啟動(dòng)一個(gè) express 靜態(tài)資源 web 服務(wù)器,并且會(huì)以監(jiān)聽模式自動(dòng)運(yùn)行 webpack,在瀏覽器打開 http://localhost:8080/http://localhost:8080/webpack-dev-server/ 可以瀏覽項(xiàng)目中的頁面和編譯后的資源輸出,并且通過一個(gè) socket.io 服務(wù)實(shí)時(shí)監(jiān)聽它們的變化并自動(dòng)刷新頁面。

npm install webpack-dev-server -g 

運(yùn)行

 webpack-dev-server --progress --colors
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 版權(quán)聲明:本文為博主原創(chuàng)文章,未經(jīng)博主允許不得轉(zhuǎn)載。 webpack介紹和使用 一、webpack介紹 1、由來 ...
    it筱竹閱讀 11,486評(píng)論 0 21
  • GitChat技術(shù)雜談 前言 本文較長,為了節(jié)省你的閱讀時(shí)間,在文前列寫作思路如下: 什么是 webpack,它要...
    蕭玄辭閱讀 12,916評(píng)論 7 110
  • 無意中看到zhangwnag大佬分享的webpack教程感覺受益匪淺,特此分享以備自己日后查看,也希望更多的人看到...
    小小字符閱讀 8,383評(píng)論 7 35
  • 最近在學(xué)習(xí) Webpack,網(wǎng)上大多數(shù)入門教程都是基于 Webpack 1.x 版本的,我學(xué)習(xí) Webpack 的...
    My_Oh_My閱讀 8,345評(píng)論 40 247
  • 自由=能力-欲望,請(qǐng)談?wù)勀愕睦斫狻?關(guān)于自由,有太多的定義。我想起多年以前,我和東東的對(duì)話。 我沒有找到我曾經(jīng)記錄...
    常拓閱讀 144評(píng)論 0 0

友情鏈接更多精彩內(nèi)容