webpack中module听怕、chunk捧挺、bundle的區(qū)別

webpack中module、chunk尿瞭、bundle的區(qū)別
首先我們在 src 目錄下寫我們的業(yè)務代碼闽烙,引入 index.js、utils.js筷厘、common.js 和 index.css 這 4 個文件鸣峭,目錄結(jié)構(gòu)如下:

src/
├── index.css
├── index.html  //  這個是 HTML 模板代碼
├── index.js
├── common.js
└── utils.js

index.css 寫一點兒簡單的樣式:

body {
    background-color: red;
}

utils.js 文件寫個求平方的工具函數(shù):

export function square(x) {
    return x * x;
}

common.js 文件寫個 log 工具函數(shù):

module.exports = {
  log: (msg) => {
    console.log('hello ', msg)
  }
}

index.js 文件做一些簡單的修改宏所,引入 css 文件和 common.js:

import './index.css';
const { log } = require('./common');

log('webpack');

webpack 的配置如下:

{
    entry: {
        index: "../src/index.js",
        utils: '../src/utils.js',
    },
    output: {
        filename: "[name].bundle.js", // 輸出 index.js 和 utils.js
    },
    module: {
        rules: [
            {
                test: /\.css$/,
                use: [
                    MiniCssExtractPlugin.loader, // 創(chuàng)建一個 link 標簽
                    'css-loader', // css-loader 負責解析 CSS 代碼, 處理 CSS 中的依賴
                ],
            },
        ]
    }
    plugins: [
        // 用 MiniCssExtractPlugin 抽離出 css 文件,以 link 標簽的形式引入樣式文件
        new MiniCssExtractPlugin({
            filename: 'index.bundle.css' // 輸出的 css 文件名為 index.css
        }),
    ]
}

我們運行一下 webpack摊溶,看一下打包的結(jié)果:


image.png

我們可以看出爬骤,index.css 和 common.js 在 index.js 中被引入,打包生成的 index.bundle.css 和 index.bundle.js 都屬于 chunk 0莫换,utils.js 因為是獨立打包的霞玄,它生成的 utils.bundle.js 屬于 chunk 1。

感覺還有些繞拉岁?我做了一張圖坷剧,你肯定一看就懂:


image.png

看這個圖就很明白了:

1、對于一份同邏輯的代碼喊暖,當我們手寫下一個一個的文件惫企,它們無論是 ESM 還是 commonJS 或是 AMD,他們都是 module 陵叽;
2狞尔、當我們寫的 module 源文件傳到 webpack 進行打包時,webpack 會根據(jù)文件引用關(guān)系生成 chunk 文件巩掺,webpack 會對這個 chunk 文件進行一些操作偏序;
3、webpack 處理好 chunk 文件后胖替,最后會輸出 bundle 文件研儒,這個 bundle 文件包含了經(jīng)過加載和編譯的最終源文件,所以它可以直接在瀏覽器中運行独令。
一般來說一個 chunk 對應一個 bundle端朵,比如上圖中的 utils.js -> chunks 1 -> utils.bundle.js;但也有例外记焊,比如說上圖中逸月,我就用 MiniCssExtractPlugin 從 chunks 0 中抽離出了 index.bundle.css 文件。

1.1 一句話總結(jié):
module遍膜,chunk 和 bundle 其實就是同一份邏輯代碼在不同轉(zhuǎn)換場景下的取了三個名字:

我們直接寫出來的是 module碗硬,webpack 處理時是 chunk,最后生成瀏覽器可以直接運行的 bundle瓢颅。

參考來源:https://www.cnblogs.com/skychx/p/webpack-module-chunk-bundle.html

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末恩尾,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子挽懦,更是在濱河造成了極大的恐慌翰意,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,110評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異冀偶,居然都是意外死亡醒第,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,443評論 3 395
  • 文/潘曉璐 我一進店門进鸠,熙熙樓的掌柜王于貴愁眉苦臉地迎上來稠曼,“玉大人,你說我怎么就攤上這事客年∠挤” “怎么了?”我有些...
    開封第一講書人閱讀 165,474評論 0 356
  • 文/不壞的土叔 我叫張陵量瓜,是天一觀的道長司恳。 經(jīng)常有香客問我,道長绍傲,這世上最難降的妖魔是什么扔傅? 我笑而不...
    開封第一講書人閱讀 58,881評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮唧取,結(jié)果婚禮上铅鲤,老公的妹妹穿的比我還像新娘。我一直安慰自己枫弟,他們只是感情好,可當我...
    茶點故事閱讀 67,902評論 6 392
  • 文/花漫 我一把揭開白布鹏往。 她就那樣靜靜地躺著淡诗,像睡著了一般。 火紅的嫁衣襯著肌膚如雪伊履。 梳的紋絲不亂的頭發(fā)上韩容,一...
    開封第一講書人閱讀 51,698評論 1 305
  • 那天,我揣著相機與錄音唐瀑,去河邊找鬼群凶。 笑死,一個胖子當著我的面吹牛哄辣,可吹牛的內(nèi)容都是我干的请梢。 我是一名探鬼主播,決...
    沈念sama閱讀 40,418評論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼力穗,長吁一口氣:“原來是場噩夢啊……” “哼毅弧!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起当窗,我...
    開封第一講書人閱讀 39,332評論 0 276
  • 序言:老撾萬榮一對情侶失蹤够坐,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體元咙,經(jīng)...
    沈念sama閱讀 45,796評論 1 316
  • 正文 獨居荒郊野嶺守林人離奇死亡梯影,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,968評論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了庶香。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片光酣。...
    茶點故事閱讀 40,110評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖脉课,靈堂內(nèi)的尸體忽然破棺而出救军,到底是詐尸還是另有隱情,我是刑警寧澤倘零,帶...
    沈念sama閱讀 35,792評論 5 346
  • 正文 年R本政府宣布唱遭,位于F島的核電站,受9級特大地震影響呈驶,放射性物質(zhì)發(fā)生泄漏拷泽。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,455評論 3 331
  • 文/蒙蒙 一袖瞻、第九天 我趴在偏房一處隱蔽的房頂上張望司致。 院中可真熱鬧,春花似錦聋迎、人聲如沸脂矫。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,003評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽庭再。三九已至,卻和暖如春牺堰,著一層夾襖步出監(jiān)牢的瞬間拄轻,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,130評論 1 272
  • 我被黑心中介騙來泰國打工伟葫, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留恨搓,地道東北人。 一個月前我還...
    沈念sama閱讀 48,348評論 3 373
  • 正文 我出身青樓筏养,卻偏偏與公主長得像斧抱,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子撼玄,可洞房花燭夜當晚...
    茶點故事閱讀 45,047評論 2 355

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

  • 先初始化一個簡單的項目 在項目根目錄下創(chuàng)建src文件夾夺姑,創(chuàng)建文件page.css 創(chuàng)建common.js 創(chuàng)建文件...
    HoooChan閱讀 377評論 0 0
  • Webpack是現(xiàn)在主流的功能強大的模塊化打包工具,在使用Webpack時掌猛,如果不注意性能優(yōu)化盏浙,有非常大的可能會產(chǎn)...
    沫之閱讀 980評論 0 0
  • 一眉睹、webpack 配置 1. 資源入口 Webpack 通過 context 和 entry 這兩個配置項來共同...
    了凡和纖風閱讀 970評論 0 7
  • 前端將大型項目分成一個個單獨的模塊,一般封裝好的每個模塊都會實現(xiàn)一個目的明確的完成的功能废膘。如何處理這些模塊以及模塊...
    pixels閱讀 3,426評論 1 14
  • vue-webpack項目配置以及打包流程詳解 我認為如果你要用webpack打包項目竹海,首先你需要有一個思維的轉(zhuǎn)化...
    qiqi七七qiqi閱讀 3,045評論 1 7