webpack 3 X學習之多頁面打包

2022-03-06 11:05:29 字數 1909 閱讀 9293

作者**原文:

我們開發不可能只寫乙個頁面,每次都要寫很多頁面,這時為了開發效率,我們使用前端自動化工具webpack,那麼webpack是如何打包頁面的呢?又是如何打包多頁面的呢?

我們知道要打包單頁面的方法,很簡單,配置入口,和html外掛程式,

const htmlwebpackplugin = require('html-webpack-plugin');

const config = ,

output:

...plugins:[

new htmlwebpackplugin(})]

}

上面的配置就是打包乙個單頁面的**,具體配置項的意思請參考htmlwebpackplugin;

在學了webpack之後,我的感受是我會配置webpack了,也能執行了,但是學習的過程中都是單頁面的,那麼多頁是如何打包的呢?其實多頁面的打包和單頁面的打包的原理是一樣的,只是多配置幾個對應的入口,和出口,以及htmlwebpackplugin物件;當然你完全可以像下面這樣:

const config = ,

output:

...plugins:[

new htmlwebpackplugin(

}),new htmlwebpackplugin(})]

}

細心的你肯定發現我改變了幾個地方,一是,把output.filename的『js/index.js』變成了『js/[name].js』,這是因為我們是多頁面,每個頁面對應相應的js這樣方便管理,二是,在htmlwebpackplugin物件中新增了chunks這個屬性,chunk屬性是讓你選擇對應的js模組;

上面這種寫法當然是沒有問題,這是只有兩個頁面無所謂,那麼有十個甚至更多呢,我們一直做著重複的事,這不是我們程式設計師的風格,我們就是為了能夠偷懶才做程式設計師的不是嗎?(當然還有高工資(#.#)),接下來我們來抽離這些重複的事;

首先,我們通過node的glob物件,來獲取我們存在的html或js;

/**

** @param globpath 檔案的路徑

* @returns entries

*/function getview(globpath,flag),

entry, dirname, basename, pathname, extname;

files.foreach(item => else if (extname === '.js')

});return entries;

}

既然,我們已經有了getview()函式,可以獲取html和js檔案,那麼我們就可以確定有多少個入口,和多少個頁面;

let entriesobj = getview('./src/js/*.js');

let config =

上面我們就配置好了入口,不需要我們手動新增了,有多少js就有多少入口;

let pages = object.keys(getview('./src/*html'));

pages.foreach(pathname => .html`,

template: `$.html`,

hash: true,

chunks:[htmlname],

minify:

}config.plugins.push(new htmlwebpackplugin(conf));

});

最後,我們獲取html頁面,和新增對應頁面的htmlwebpackplugin物件;

通過以上的三個步驟,就可以配置好乙個可以打包多頁面的webpack工具;本人的水平比較有限,在書寫的過程中,可能有很多說的比較模糊,請多多包涵,也請大神拍磚,多多指教

webpack1 x至webpack3 x遷移踩坑

今天將我自己的手腳架從webpack1.x遷移到webpack3.x,途中一切順利,跟著遷移文件 1 其中比較坑爹的2點是 1 postcss配置。需要在根目錄建立postcss.config.js這樣乙個配置檔案 嗯,解耦了。配置項變了啊。挺坑的。路過的朋友注意一下。2 css使用hot modu...

webpack4 x學習筆記

有輸入必須有輸出,今天就來輸出一下學習webpack的過程。不得不先吐槽一下,比起可愛的grunt和好用的gulp,對webpack真心愛不起來!還有乙個血的教訓 千萬不要偷懶,有問題直接去官網。本文旨在記錄學習webpack的過車和遇到的問題,適合對node和webpack基礎知識有些了解的開發人...

CodeIgniter 3 x 學習筆記

測試安裝是否成功 移除 url 中的 index.php 在系統的根目錄下面建立乙個名為.htaccess的檔案,並加上以下 rewriteengine on rewritecond f rewritecond d rewriterule index.php 1 l 獲取前端傳遞過來的值 this ...