webpack性能優(yōu)化--自動(dòng)刷新和熱更新

自動(dòng)刷新

自動(dòng)刷新是指webpack的devServer在監(jiān)聽到文件有變化后馁菜,會觸發(fā)重新構(gòu)建打包筷狼,然后自動(dòng)刷新頁面议忽,源文件的變化就可以實(shí)時(shí)查看效果引润。

配置方式

module.exports = {  // ...
devServer: {
        port: 8080,
        progress: true,  // 顯示打包的進(jìn)度條
        contentBase: distPath,  // 根目錄
        open: true,  // 自動(dòng)打開瀏覽器
        compress: true,  // 啟動(dòng) gzip 壓縮

        hot: true
    },
    watch: true, // 開啟監(jiān)聽,默認(rèn)為 false
    watchOptions: {
        ignored: /node_modules/, // 忽略哪些
        // 監(jiān)聽到變化發(fā)生后會等300ms再去執(zhí)行動(dòng)作宗弯,防止文件更新太快導(dǎo)致重新編譯頻率太高
        // 默認(rèn)為 300ms
        aggregateTimeout: 300,
        // 判斷文件是否發(fā)生變化是通過不停的去詢問系統(tǒng)指定文件有沒有變化實(shí)現(xiàn)的
        // 默認(rèn)每隔1000毫秒詢問一次
        poll: 1000
    }
}

缺點(diǎn)

自動(dòng)刷新會使整個(gè)頁面全部刷新脯燃,速度慢,且程序的狀態(tài)會丟失

熱更新

熱更新又叫做模塊熱替換(hot module replacement 或 HMR)蒙保,會在應(yīng)用程序運(yùn)行過程中辕棚,替換、添加或刪除 模塊,而無需重新加載整個(gè)頁面逝嚎。新代碼生效扁瓢,頁面不刷新,狀態(tài)不丟失补君。

配置方式

1引几、引入HotModuleReplacementPlugin插件

const HotModuleReplacementPlugin = require('webpack/lib/HotModuleReplacementPlugin');
module.exports = {  
    // ...
    plugins: [     
        new webpack.DefinePlugin({         
            ENV: JSON.stringify('development')
       }),     
       new HotModuleReplacementPlugin()
    ],
  }

2、配置入口
原來的入口路徑字符串挽铁,改為數(shù)組

module.exports = {  
    // ...
     entry: {
        // index: path.join(srcPath, 'index.js'),
        index: [
            // 對應(yīng)自己本地項(xiàng)目端口
            'webpack-dev-server/client?http://localhost:8080/',
            'webpack/hot/dev-server',
            path.join(srcPath, 'index.js')
        ],
        other: path.join(srcPath, 'other.js')
    },
  }

3伟桅、devServer開啟熱更新

module.exports = {  
  // ...
  devServer: {
        // ...
        hot: true
    }
}

4、注冊熱更新范圍

最后一步叽掘,要在代碼中注冊監(jiān)聽范圍楣铁,使用module.hot.accept()函數(shù)指定熱更新監(jiān)聽范圍。 eg:在index.js中更扁,要監(jiān)聽./sum.js文件民褂,如果有更新就馬上執(zhí)行指定函數(shù):

import { sum } from './math'

// 增加,開啟熱更新之后的代碼邏輯
if (module.hot) {
    module.hot.accept(['./math'], () => {
        const sumRes = sum(10, 30)
        console.log('sumRes in hot', sumRes)
    })
}

優(yōu)點(diǎn)

1疯潭、保留在完全重新加載頁面期間丟失的應(yīng)用程序狀態(tài)
2赊堪、只更新變更內(nèi)容,以節(jié)省寶貴的開發(fā)時(shí)間
3竖哩、在源代碼中 CSS/JS 產(chǎn)生修改時(shí)哭廉,會立刻在瀏覽器中進(jìn)行更新,這幾乎相當(dāng)于在瀏覽器 devtools 直接更改樣式

缺點(diǎn)

要在代碼里注冊熱更新的范圍相叁,增加代碼量遵绰。所以除非代碼太龐大,更新速度很慢增淹,一般開啟熱更新反而會增加開發(fā)開銷椿访。

注意

自動(dòng)刷新和熱更新只能在開發(fā)環(huán)境中使用,即只需要在webpack.dev.js中配置虑润,不可用于生產(chǎn)環(huán)境成玫。原因是自動(dòng)刷新和熱更新都是為了監(jiān)聽源文件變化而進(jìn)行更新,生產(chǎn)環(huán)境都是打包好的靜態(tài)文件拳喻,不會出現(xiàn)源文件的變化哭当,所以生產(chǎn)環(huán)境無須進(jìn)行自動(dòng)刷新和熱更新的配置

兩者都是用于開發(fā)環(huán)境

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市冗澈,隨后出現(xiàn)的幾起案子钦勘,更是在濱河造成了極大的恐慌,老刑警劉巖亚亲,帶你破解...
    沈念sama閱讀 219,427評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件彻采,死亡現(xiàn)場離奇詭異腐缤,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)肛响,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,551評論 3 395
  • 文/潘曉璐 我一進(jìn)店門柴梆,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人终惑,你說我怎么就攤上這事∶派龋” “怎么了雹有?”我有些...
    開封第一講書人閱讀 165,747評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長臼寄。 經(jīng)常有香客問我霸奕,道長,這世上最難降的妖魔是什么吉拳? 我笑而不...
    開封第一講書人閱讀 58,939評論 1 295
  • 正文 為了忘掉前任质帅,我火速辦了婚禮,結(jié)果婚禮上留攒,老公的妹妹穿的比我還像新娘煤惩。我一直安慰自己,他們只是感情好炼邀,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,955評論 6 392
  • 文/花漫 我一把揭開白布魄揉。 她就那樣靜靜地躺著,像睡著了一般拭宁。 火紅的嫁衣襯著肌膚如雪洛退。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,737評論 1 305
  • 那天杰标,我揣著相機(jī)與錄音兵怯,去河邊找鬼。 笑死腔剂,一個(gè)胖子當(dāng)著我的面吹牛媒区,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播掸犬,決...
    沈念sama閱讀 40,448評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼驻仅,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了登渣?” 一聲冷哼從身側(cè)響起噪服,我...
    開封第一講書人閱讀 39,352評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎胜茧,沒想到半個(gè)月后粘优,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體仇味,經(jīng)...
    沈念sama閱讀 45,834評論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,992評論 3 338
  • 正文 我和宋清朗相戀三年雹顺,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了丹墨。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,133評論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡嬉愧,死狀恐怖贩挣,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情没酣,我是刑警寧澤王财,帶...
    沈念sama閱讀 35,815評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站裕便,受9級特大地震影響绒净,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜偿衰,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,477評論 3 331
  • 文/蒙蒙 一挂疆、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧下翎,春花似錦缤言、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,022評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至郑口,卻和暖如春鸳碧,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背犬性。 一陣腳步聲響...
    開封第一講書人閱讀 33,147評論 1 272
  • 我被黑心中介騙來泰國打工瞻离, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人乒裆。 一個(gè)月前我還...
    沈念sama閱讀 48,398評論 3 373
  • 正文 我出身青樓套利,卻偏偏與公主長得像,于是被迫代替她去往敵國和親鹤耍。 傳聞我的和親對象是個(gè)殘疾皇子肉迫,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,077評論 2 355

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