Webpack(7)HMR模組熱替換

2021-10-23 17:38:38 字數 1830 閱讀 8146

模組熱替換(hot module replacement 或 hmr)是 webpack 提供的最有用的功能之一。

它允許在執行時更新各種模組,而無需進行完全重新整理。

hmr 不適用於生產環境,這意味著它應當只在開發環境使用。

啟用此功能實際上相當簡單。而我們要做的,就是更新 webpack-dev-server 的配置,和使用 webpack 內建的 hmr 外掛程式。

const path =

require

('path');

const htmlwebpackplugin =

require

('html-webpack-plugin');

const cleanwebpackplugin =

require

('clean-webpack-plugin');

+const webpack =

require

('webpack');

module.exports =

, devtool:

'inline-source-map'

, devserver:

, plugins:

[new

cleanwebpackplugin([

'dist'])

,new

htmlwebpackplugin()

,+newwebpack.namedmodulesplugin()

,+newwebpack.hotmodulereplacementplugin()

],output:

};

注意,我們還新增了 namedmodulesplugin,以便更容易檢視要修補(patch)的依賴。在起步階段,我們將通過在命令列中執行 npm start 來啟動並執行 dev server。

當使用 webpack dev server 和 node.js api 時,不要將 dev server 選項放在 webpack 配置物件(webpack config object)中。而是,在建立選項時,將其作為第二個引數傳遞。例如:

new webpackdevserver(compiler, options)

想要啟用 hmr,還需要修改 webpack 配置物件,使其包含 hmr 入口起點。webpack-dev-server package 中具有乙個叫做adddevserverentrypoints 的方法,你可以通過使用這個方法來實現。這是關於如何使用的乙個小例子:

const webpackdevserver =

require

('webpack-dev-server');

const webpack =

require

('webpack');

const config =

require

('./webpack.config.js');

const options =

;webpackdevserver.

adddevserverentrypoints

(config, options)

;const compiler =

webpack

(config)

;const server =

newwebpackdevserver

(compiler, options)

;server.

listen

(5000

,'localhost',(

)=>

);

webpack模組熱替換(HMR)在開發環境中應用

效能優化基本介紹 webpack效能優化分為開發環境效能優化和生產環境效能優化。開發環境效能優化分為以下 生產環境效能優化分為 hmr在開發環境中使用 webpack.config.js中 html檔案 預設不能使用hmr功能,同時會導致問題 html檔案不能熱更新 解決 修改entry入口,將ht...

Webpack 的 HMR 執行機制

本場 chat 是為想深入了解 webpack hmr 原理的讀者準備的。內容主要從 chrome 除錯工具 配置檔案 官方文件三個方面,介紹 hmr 如何在頁面不重新整理的前提下,實現前端頁面中程式 的替換。本場 chat 主要內容 利用 chrome 除錯工具發現 hmr 的執行軌跡 弄清楚配置...

webpack配置 公升級版熱更新HMR

在上篇文章中簡單的配置了下熱更新,用於了解的,本篇文章解決熱更新的效能優化問題。在webpack.config.js檔案中的devserver屬性中增加hot true 在配置hot true時,如果出現uncaught error hmr hot module replacement is dis...