webpack入門學(xué)習(xí)筆記13 —— 使用Webpack打包多頁面應(yīng)用

1. 寫在前面

如果你熟悉Vue或者React的話,那么你肯定知道使用這些框架創(chuàng)建的應(yīng)用屬于 單頁面應(yīng)用 。這些框架底層使用的就是Webpack來構(gòu)建項目,通過對項目文件進行打包編譯,最終生成一個 .html 文件亩冬,所以我們說這些應(yīng)用屬于 單頁面應(yīng)用于樟。

但是在使用webpack進行構(gòu)建項目的時候公条,不僅可以構(gòu)建單頁面應(yīng)用,還可以構(gòu)建多頁面應(yīng)用迂曲。

在實際的項目中靶橱,如果該項目初期使用的就是 腳手架(比如Vue腳手架或者React腳手架) 搭建起來的,那么該項目大多是單頁面應(yīng)用路捧。

但是如果項目在前期不是使用 腳手架 搭建起來的关霸,比如使用 jQuery 庫來開發(fā)的。但是后期有幾個大的業(yè)務(wù)邏輯杰扫,需要使用 Vue腳手架 或者是 React腳手架 來開發(fā)队寇,這個時候可能就需要使用Webpack來構(gòu)建多頁面應(yīng)用,每一個大的業(yè)務(wù)邏輯對應(yīng)一個單頁面應(yīng)用章姓。

所以在這篇博客中佳遣,我就來跟大家介紹一下如何使用Webpak,構(gòu)建多頁面應(yīng)用啤覆。主要內(nèi)容包括:

  • 如何通過打包編譯苍日,生成不同的 .js 文件
  • 如何在 .html 文件中,引入指定的 .js 文件

2. 如何通過打包編譯窗声,生成不同的 .js 文件

如果你看過我之前的博客相恃,那么你就會知道在 webpack.config.js 文件中,有以下的配置:

module.exports = {
    entry: "./src/index.js", // 打包的入口文件笨觅,默認(rèn)是src目錄下的index.js文件
    output: { // 配置文件默認(rèn)是dist目錄下的main.js文件
        filename: "index.js", // 出口文件的文件名
        path: path.resolve(__dirname, "build"), //出口文件的路徑拦耐,注意一定要是絕對路徑
    }
}

通過以上的配置,webpack就可以找到項目的入口文件(./src/index.js)來對項目進行打包編譯见剩,最終生成的就是一個單頁面應(yīng)用杀糯。這就給我們提供一個思路:如果我們想要使用webpack打包編譯,生成多頁面應(yīng)用苍苞,也要通過修改這兩個配置屬性來完成固翰。

想要構(gòu)建多頁面應(yīng)用,配置方式非常簡單羹呵,這里直接給出配置代碼骂际,然后再作出解釋:

module.exports = {
    entry: {    // 指定入口文件
        'home': "./src/index.js",   
        'other': "./src/other.js"
    }, 
    output: { // 配置文件默認(rèn)是dist目錄下的main.js文件
        filename: "[name].js", // 出口文件的文件名
        path: path.resolve(__dirname, "build"), //出口文件的路徑,注意一定要是絕對路徑
    },
}

通過上面的代碼冈欢,我們可以看到歉铝,entry 屬性的值由字符串變?yōu)榱藢ο蟆T谠搶ο笾写粘埽覀兣渲昧藘蓚€屬性太示,這就表明柠贤,我們準(zhǔn)備使用webpack來構(gòu)建 兩個 單頁面應(yīng)用,分別是 home 應(yīng)用和 other 應(yīng)用类缤。他們都有一個對應(yīng)的入口文件臼勉,webpack在打包編譯的時候,就是從他們的入口文件觸發(fā)呀非,分別構(gòu)建對應(yīng)的單頁面應(yīng)用坚俗。

同時我們還修改了 output.filename 這個屬性,不再是固定的 index.js岸裙,而是 [name].js 。這樣就可以通過 entry對象 的兩個屬性(即home和other)來動態(tài)生成對應(yīng)的 .js 文件速缆。

現(xiàn)在你可以在 src文件夾 下創(chuàng)建兩個入口文件 index.jsother.js 降允,在里面寫對應(yīng)的代碼,然后執(zhí)行webpack的 build 命令艺糜,就可以進行打包編譯剧董,最終會生成兩個文件,即 index.jsother.js 破停,到這一步多頁面應(yīng)用的 .js 文件已經(jīng)構(gòu)建完成了翅楼。

3. 如何在 .html 文件中,引入指定的 .js 文件

現(xiàn)在多頁面應(yīng)用的 .js 文件已經(jīng)構(gòu)建完成真慢,但是我們還需要在 .html 文件中引入 .js 文件毅臊,多頁面應(yīng)用才算是正式完成,所以這一節(jié)我們介紹如何在 .html 文件中引入 .js 文件黑界。

想要達(dá)到這個目的管嬉,我們需要解除 html-webpack-plugin 這一插件的幫助,首先執(zhí)行以下代碼進行安裝:

yarn add html-webpack-plugin -D

安裝完成之后朗鸠,到 webpack.config.js 文件中做以下配置:

let HtmlWebpackPlugin = requier('html-webpack-plugin')

module.exports = {
    /* 節(jié)省篇幅蚯撩,其余配置已省略 */
    plugins: [
        new HtmlWebpackPlugin({
            template: './index.html',
            filename: 'home.html',
            chunks: ['home']
        }),
        new HtmlWebpackPlugin({
            template: './index.html',
            filename: 'other.html',
            chunks: ['other']
            // chunks: ['other', 'home']    // 也可以引入多個 .js 文件
        }),
    ]
}

這里將其他的配置規(guī)則省略了,如果你想看其他的配置規(guī)則烛占,可以查看我的 GitHub倉庫 - webpack-learning ,或者通過本文末尾的鏈接胎挎,跳轉(zhuǎn)到我之前的博客中進行查看。

因為我們這里構(gòu)建的是兩個單頁面應(yīng)用忆家,所以這里要創(chuàng)建兩個 HtmlWebpackPlugin 對象犹菇,在每個對象中,都有三個屬性弦赖,這里一一對這些屬性做出解釋:

  • template: 這是模板文件项栏,webpack會在這個文件中,通過 <script src=""></script> 標(biāo)簽引入打包編譯生成的 .js 文件蹬竖,生成最終的 .html 頁面文件沼沈。
  • filename: 在模板文件中引入 .js 文件流酬,會生成一個新的 .html 文件,通過 filename 屬性列另,可以指定生成的 .html 文件的名稱芽腾。
  • chunks: 現(xiàn)在模板文件和打包編譯的 .js 文件都已經(jīng)有了,但是要在模板文件中引入哪些 .js 文件呢页衙?可以通過 chunks 屬性來指定摊滔。我們可以通過數(shù)組的形式,指定一個或多個 .js 文件店乐,這樣就可以在模板文件中引入一個或多個 .js 文件艰躺。

有了上面的配置,現(xiàn)在執(zhí)行webpack的 build 命令眨八,就可以進行打包編譯腺兴,最終最終會生成 home.htmlother.html 兩個文件,也就是兩個單頁面應(yīng)用廉侧。如此一來页响,我們就使用webpack成功構(gòu)建了多頁面應(yīng)用。

4. 寫在最后

到此為止段誊,我們?nèi)绾问褂脀ebpack構(gòu)建多頁面應(yīng)用闰蚕,并且生成了對應(yīng)的 .html 文件,現(xiàn)在到項目中连舍,使用這些 .html 文件没陡,就可以使用我們開發(fā)的應(yīng)用了。

上一篇: webpack入門學(xué)習(xí)筆記12 —— 打包編譯后文件的引入路徑問題

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末烟瞧,一起剝皮案震驚了整個濱河市诗鸭,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌参滴,老刑警劉巖强岸,帶你破解...
    沈念sama閱讀 217,277評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異砾赔,居然都是意外死亡蝌箍,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評論 3 393
  • 文/潘曉璐 我一進店門暴心,熙熙樓的掌柜王于貴愁眉苦臉地迎上來妓盲,“玉大人,你說我怎么就攤上這事专普∶醭模” “怎么了?”我有些...
    開封第一講書人閱讀 163,624評論 0 353
  • 文/不壞的土叔 我叫張陵檀夹,是天一觀的道長筋粗。 經(jīng)常有香客問我策橘,道長,這世上最難降的妖魔是什么娜亿? 我笑而不...
    開封第一講書人閱讀 58,356評論 1 293
  • 正文 為了忘掉前任丽已,我火速辦了婚禮,結(jié)果婚禮上买决,老公的妹妹穿的比我還像新娘沛婴。我一直安慰自己,他們只是感情好督赤,可當(dāng)我...
    茶點故事閱讀 67,402評論 6 392
  • 文/花漫 我一把揭開白布嘁灯。 她就那樣靜靜地躺著,像睡著了一般躲舌。 火紅的嫁衣襯著肌膚如雪旁仿。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,292評論 1 301
  • 那天孽糖,我揣著相機與錄音,去河邊找鬼毅贮。 笑死办悟,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的滩褥。 我是一名探鬼主播病蛉,決...
    沈念sama閱讀 40,135評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼瑰煎!你這毒婦竟也來了铺然?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,992評論 0 275
  • 序言:老撾萬榮一對情侶失蹤酒甸,失蹤者是張志新(化名)和其女友劉穎魄健,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體插勤,經(jīng)...
    沈念sama閱讀 45,429評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡沽瘦,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,636評論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了农尖。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片析恋。...
    茶點故事閱讀 39,785評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡干像,死狀恐怖缨硝,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情嫌变,我是刑警寧澤滑沧,帶...
    沈念sama閱讀 35,492評論 5 345
  • 正文 年R本政府宣布并村,位于F島的核電站巍实,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏橘霎。R本人自食惡果不足惜蔫浆,卻給世界環(huán)境...
    茶點故事閱讀 41,092評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望姐叁。 院中可真熱鬧瓦盛,春花似錦、人聲如沸外潜。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,723評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽处窥。三九已至嘱吗,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間滔驾,已是汗流浹背谒麦。 一陣腳步聲響...
    開封第一講書人閱讀 32,858評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留哆致,地道東北人绕德。 一個月前我還...
    沈念sama閱讀 47,891評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像摊阀,于是被迫代替她去往敵國和親耻蛇。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,713評論 2 354