【webpack】一步步的看webpack-2

前面先接觸了一下webpack這個東西抵乓,那這個webpack到底是干什么的,為什么要用webpack呢?這篇文章主要講一講為什么要用webpack

官方的概念

  • 本質(zhì)上失暴,webpack 是一個現(xiàn)代 JavaScript 應用程序的靜態(tài)模塊打包器(module bundler)。當 webpack 處理應用程序時微饥,它會遞歸地構建一個依賴關系圖(dependency graph)逗扒,其中包含應用程序需要的每個模塊,然后將所有這些模塊打包成一個或多個 bundle欠橘。
    這是說的什么意思呢矩肩?其中官方的話有主要的兩個概念:1. 打包,2.模塊

為什么要打包

然后讓我們從一個html頁面說起肃续,下面的代碼可以看到黍檩,我在html頁面中通過script標簽引入了3個JavaScript文件a.js,b.js和c.js始锚,每個文件中分別定義了一個函數(shù)并導出(export)給外部用刽酱。并且它們之間有一定的依賴關系,c.js依賴于b.js瞧捌,b.js依賴于a.js棵里。

|- index.html
|- main.css
| - a.js
| - b.js
| - c.js
// index.html
<!doctype html>
<html>
  <head><link href="main.css" rel="stylesheet"></head>
  <body>
    <div>hello world</div>
    <script type="text/javascript" src="a.js"></script>
    <script type="text/javascript" src="b.js"></script>
    <script type="text/javascript" src="c.js"></script>
  </body>
</html>
// a.js
export default function () {
  return a + b;
}
// b.js
import add from 'a';
export default function (c, d) {
  return c / add(c, d);
}
// c.js
import percentage from 'b';

export default function (e, f) {
  console.log(percentage(e, f));
}

因為有3個js文件,所以瀏覽器需要發(fā)送三次http 請求來獲取這三個文件,然后依次執(zhí)行其中的代碼衍慎,如果其中有一個文件因為網(wǎng)絡問題而延誤了時間转唉,那么整個頁面的顯示也會被延誤。3個文件還好稳捆,而當我們的項目逐漸變大赠法,有幾十個到上百個JavaScript文件的時候,那問題會更嚴重乔夯,不但有延遲問題砖织,還會遇到很難維護的問題 — 想想如何維護上百個文件的依賴關系?

這時候你會想末荐,是不是我把所有JavaScript文件合成一個文件就好了呢侧纯?沒錯,我們確實可以這樣做甲脏,這樣就減少了http請求數(shù)量眶熬,讓我們的頁面加載和顯示更快。不過這個合并的階段是在開發(fā)完成之后才進行的块请,也就是說開發(fā)階段我仍然是有a.js娜氏,b.js和c.js等等這些文件的,這樣才好開發(fā)和維護墩新,因為如果開發(fā)階段就合并的話贸弥,就相當于我基于一個可能上萬行的文件進行開發(fā),這樣的代碼是沒法維護的海渊。

在開發(fā)后完成的這個合并的過程就是打包绵疲,這樣你就明白為什么要打包了吧。webpack在打包過程中臣疑,會分析各個文件之間的依賴關系盔憨,然后生成一個依賴圖并用文件的形式保存下來,未來瀏覽器運行代碼的時候就可以讀取這個文件讯沈,就知道了各個代碼塊之間的關聯(lián)以及如何調(diào)用了般渡。


webpack

上面只是用JavaScript文件來舉例子,實際上webpack可以支持多種文件類型的打包芙盘,如css驯用,sass,jpg儒老,svg等等蝴乔。

什么是模塊

上面的3個文件,每個文件都可以看做是一個模塊驮樊,在JavaScript中可以把模塊看做是一堆代碼薇正,這堆代碼可以被復用片酝,執(zhí)行某個具體的操作,從表象上來看就是一個模塊就是一個文件挖腰,其中包含了export這樣的關鍵字用來將模塊的功能導出給外部用雕沿。

// b.js
import add from 'a';
export default function (c, d) {
  return c / add(c, d);
}

從b.js這個文件/模塊中就可以看出,首先從a模塊中導入了一個函數(shù)猴仑,然后定義了一個新的函數(shù)审轮,并通過export 導出。
官方講解模塊

總結

打包是webpack最核心的功能辽俗,webpack其它所有的功能都是為了讓打包這個功能更好疾渣。我們從一個簡單的html頁面介紹了通過webpack對模塊進行打包,既保留了單個模塊的可維護性崖飘,又減少了頁面的http請求榴捡,減少了頁面加載時間,從而增加了頁面的顯示速度朱浴,讓整個應用的體驗更好吊圾。

?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市翰蠢,隨后出現(xiàn)的幾起案子街夭,更是在濱河造成了極大的恐慌,老刑警劉巖躏筏,帶你破解...
    沈念sama閱讀 217,406評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異呈枉,居然都是意外死亡趁尼,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,732評論 3 393
  • 文/潘曉璐 我一進店門猖辫,熙熙樓的掌柜王于貴愁眉苦臉地迎上來酥泞,“玉大人,你說我怎么就攤上這事啃憎≈ザ冢” “怎么了?”我有些...
    開封第一講書人閱讀 163,711評論 0 353
  • 文/不壞的土叔 我叫張陵辛萍,是天一觀的道長悯姊。 經(jīng)常有香客問我,道長贩毕,這世上最難降的妖魔是什么悯许? 我笑而不...
    開封第一講書人閱讀 58,380評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮辉阶,結果婚禮上先壕,老公的妹妹穿的比我還像新娘瘩扼。我一直安慰自己,他們只是感情好垃僚,可當我...
    茶點故事閱讀 67,432評論 6 392
  • 文/花漫 我一把揭開白布集绰。 她就那樣靜靜地躺著,像睡著了一般谆棺。 火紅的嫁衣襯著肌膚如雪栽燕。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,301評論 1 301
  • 那天包券,我揣著相機與錄音纫谅,去河邊找鬼。 笑死溅固,一個胖子當著我的面吹牛付秕,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播侍郭,決...
    沈念sama閱讀 40,145評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼询吴,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了亮元?” 一聲冷哼從身側響起猛计,我...
    開封第一講書人閱讀 39,008評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎爆捞,沒想到半個月后奉瘤,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,443評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡煮甥,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,649評論 3 334
  • 正文 我和宋清朗相戀三年盗温,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片成肘。...
    茶點故事閱讀 39,795評論 1 347
  • 序言:一個原本活蹦亂跳的男人離奇死亡卖局,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出双霍,到底是詐尸還是另有隱情砚偶,我是刑警寧澤,帶...
    沈念sama閱讀 35,501評論 5 345
  • 正文 年R本政府宣布洒闸,位于F島的核電站染坯,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏丘逸。R本人自食惡果不足惜酒请,卻給世界環(huán)境...
    茶點故事閱讀 41,119評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望鸣个。 院中可真熱鬧羞反,春花似錦布朦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,731評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至澄惊,卻和暖如春唆途,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背掸驱。 一陣腳步聲響...
    開封第一講書人閱讀 32,865評論 1 269
  • 我被黑心中介騙來泰國打工肛搬, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人毕贼。 一個月前我還...
    沈念sama閱讀 47,899評論 2 370
  • 正文 我出身青樓温赔,卻偏偏與公主長得像,于是被迫代替她去往敵國和親鬼癣。 傳聞我的和親對象是個殘疾皇子陶贼,可洞房花燭夜當晚...
    茶點故事閱讀 44,724評論 2 354

推薦閱讀更多精彩內(nèi)容