詳解webpack 熱更新優(yōu)化
前言
隨著項(xiàng)目的界面越來越多,webpack的熱更新越來越慢,有時(shí)會(huì)達(dá)到5,7s之久,這對(duì)于開發(fā)效率影響是非常巨大的。
分析過程
于是今天就針對(duì)這個(gè)分析了一下熱更新慢的原因,步驟如下
首先先在package中的啟動(dòng)命令加上
--progress --watch --colors --profile
先解釋一下這幾個(gè)參數(shù)的含義
- --progress 構(gòu)建進(jìn)度
- --watch 實(shí)時(shí)監(jiān)測
- --profile 編譯過程中的步驟耗時(shí)時(shí)間
加上了這幾個(gè)參數(shù),重啟項(xiàng)目,就可以開始觀察耗時(shí)時(shí)間了,修改了某個(gè)文件之后,查看控制臺(tái),如下

圖中紅色部分就是耗時(shí)最長的地方了,好了,發(fā)現(xiàn)了耗時(shí)時(shí)間長的地方了,經(jīng)過百度搜索,發(fā)現(xiàn)也有個(gè)問題和我這個(gè)非常類似,他的原因是因?yàn)槭褂昧藆glifyJsPlugin插件,這么一想,我的項(xiàng)目中的webpack配置中也用到了這個(gè)插件,于是把這個(gè)插件移到生產(chǎn)環(huán)境中使用,修改之后重啟項(xiàng)目,修改某個(gè)文件之后,查看控制臺(tái),如下

效果非常驚人,總的耗時(shí)已經(jīng)在1,2s之內(nèi)了,效率提高了不少?。∪绻灿羞@種煩惱的小伙伴也可以試一下哦
另一種解決方案
這種方案的思路為,開發(fā)環(huán)境中,每人負(fù)責(zé)的都是一部分模塊或者組件,所以熱更新可以只編譯自己當(dāng)前需要的頁面,而沒必要把所有的頁面全部編譯。創(chuàng)建一個(gè) selfConfig.js 設(shè)置需要保存的頁面,然后在 webpack 配置中,配置,只屬于需要的頁面去編譯熱更新。加快開發(fā)環(huán)境中的編譯速度。
// selfConfig.js module.exports = [ 'imScence', 'mLogin' ];
// webpack.base.conf.js
// 部分關(guān)鍵代碼
const selfConfig = require("./selfConfig");
for (let moduleName of modules) {
if (selfConfig.length === 0) {
devEntries[moduleName] = path.join(resolve('src'), 'modules', moduleName, 'main.js');
} else {
if (selfConfig.includes(moduleName)) {
devEntries[moduleName] = path.join(resolve('src'), 'modules', moduleName, 'main.js');
}
}
buildEntries[moduleName] = path.join(resolve('src'), 'modules', moduleName, 'main.js');
}
以上事例設(shè)置完成后,只會(huì)熱更新兩個(gè)頁面,但是這種方案的弊端是,其他頁面本地環(huán)境將是白屏打不開(因?yàn)閴焊鶝]編譯),所以這種方案還是根據(jù)適合自己的場景使用。
注意: 每次修改 selfConfig.js 需要重起 webpack 服務(wù)。
以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
bootstrap datetimepicker日期插件超詳細(xì)使用方法介紹
本篇文章主要介紹了bootstrap datetimepicker日期插件超詳細(xì)使用方法介紹,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-02-02
Javascript 判斷 object 的特定類轉(zhuǎn)載
Javascript 判斷 object 的特定類轉(zhuǎn)載...2007-02-02
javascript 獲取url參數(shù)和script標(biāo)簽中獲取url參數(shù)函數(shù)代碼
不要在方法中調(diào)用方法,否則可能始終獲取的是最后一個(gè)js的文件的參數(shù),要在方法中使用,請(qǐng)先用變量保存,在方法中直接獲取2010-01-01
JavaScript中的對(duì)象的extensible屬性介紹
這篇文章主要介紹了JavaScript中的對(duì)象的extensible屬性介紹,JavaScript中,對(duì)象的extensible屬性用于表示是否允許在對(duì)象中動(dòng)態(tài)添加新的property,需要的朋友可以參考下2014-12-12
TypeScript中的類型斷言[as語法|<>語法]的使用
本文主要介紹了TypeScript中的類型斷言[as語法|<>語法]的使用,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-06-06
小程序中實(shí)現(xiàn)excel數(shù)據(jù)的批量導(dǎo)入的示例代碼
本文主要介紹了小程序中實(shí)現(xiàn)excel數(shù)據(jù)的批量導(dǎo)入的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-07-07

