详解react-webpack2-热模块替换[HMR]
发布时间 - 2026-01-11 02:37:53 点击率:次本文介绍了react-webpack2-热模块替换[HMR],分享给大家,具体如下:

模块热替换功能会在应用程序运行过程中替换、添加或删除模块,而无需重新加载页面。这使得你可以在独立模块变更后,无需刷新整个页面,就可以更新这些模块,极大地加速了开发时间。
babel 配置
需要先下载 npm install --save-dev react-hot-loader@3.0.0-beta.6
然后在 .babelrc 中配置
{
"presets": [
["es2015", {"modules": false}], // webpack 2 中需要这样配置禁用
"stage-2",
"react"
],
"plugins": [
"react-hot-loader/babel"
// 开启 React 代码的模块热替换(HMR)
]
}
webpack 配置
入口插入模块热替换
entry: {
app: [
'react-hot-loader/patch',
// 开启 React 代码的模块热替换(HMR)
'webpack-dev-server/client?http://localhost:8080',
// 为 webpack-dev-server 的环境打包代码
// 然后连接到指定服务器域名与端口,可以换成本机ip
'webpack/hot/only-dev-server',
// 为热替换(HMR)打包好代码
// only- 意味着只有成功更新运行代码才会执行热替换(HMR)
'./index.js'
// 我们 app 的入口文件
],
vendor: ['react', 'react-router']
// 公共文件打包
}
出口配置 publicPath,(必须配置)
output: {
path: defPath.DEV_PATH,
// 所有输出文件的目标路径
filename: 'js/bundle.js',
publicPath: '/',
chunkFilename: '[name].chunk.js'
},
plugins 添加相应插件
plugins: [
new webpack.HotModuleReplacementPlugin(),
// 开启全局的模块热替换(HMR)
new webpack.NamedModulesPlugin()
// 控制台输出模块命名美化
]
devServer 配置 HMR
devServer: {
// ... 其他配置
hot: true,
// 开启服务器的模块热替换(HMR)
contentBase: defPath.DEV_PATH,
// 输出文件的路径
publicPath: '/'
// 和 output 的 publicPath 保持一致
}
应用代码中修改
应用代码中需要做很大的改动
拆分原入口文件
新建一个根组件,存放原入口文件中的路由配置部分
/*
Root, Router 配置
*/
import React from 'react';
import {Provider} from 'react-redux';
import {browserHistory, Router} from 'react-router';
import {syncHistoryWithStore} from 'react-router-redux';
import store from '../store/index'; // 引入 配置后的 store
import routes from '../routes.js'; // 子级路由配置
// 创建一个增强版的history来结合store同步导航事件
const browhistory = syncHistoryWithStore(browserHistory, store);
const Root = () => (
<Provider store={store}>
<div>
<Router history={browhistory} routes={routes}/>
</div>
</Provider>
);
export default Root;
原入口文件改为
/*
app/js/index.js
入口文件, 配置 webpack 热加载模块
*/
import '../scss/index.scss';
import '../scss/commoncom.scss';
import React from 'react';
import ReactDOM from 'react-dom';
import {AppContainer} from 'react-hot-loader';
// 引入 react-hot-loader 提供的容器
import injectTapEventPlugin from 'react-tap-event-plugin';
// 引入总路由的配置模块
import Root from './containers/Root';
// 定义要挂载的 DOM 节点
const mountNode = document.getElementById('app');
// react 的插件,提供onTouchTap()
injectTapEventPlugin();
// 封装 render 函数
const render = (Component) => {
ReactDOM.render((
<AppContainer>
<Component/>
</AppContainer>
), mountNode);
};
// 初始化调用
render(Root);
// 配置需要热模块替换的条件
if (module.hot && process.env.NODE_ENV !== 'production') {
// 处理对特定依赖的更改
module.hot.accept('./containers/Root', (err) => {
if (err) {
console.log(err);
}
// 从DOM 中移除已经挂载的 React 组件 然后重装
ReactDOM.unmountComponentAtNode(mountNode);
render(Root);
});
}
以上就可以使用 webpack 2 模块热替换,希望对大家的学习有所帮助,也希望大家多多支持。
# webpack2
# react热替换
# webpack
# react
# 热替换
# 浅谈Webpack多页应用HMR卡住问题
# webpack热模块替换(HMR)/热更新的方法
# 详解webpack2+node+react+babel实现热加载(hmr)
# webpack几种手动实现HMR的方式
# 就可以
# 加载
# 你可以
# 才会
# 会在
# 给大家
# 或删除
# 本机
# 重装
# 增强版
# 连接到
# 创建一个
# 大家多多
# 移除
# 过程中
# 新建一个
# 应用程序
# 极大地
# 这使得
# patch
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
实现点击下箭头变上箭头来回切换的两种方法【推荐】
Laravel如何安装使用Debugbar工具栏_Laravel性能调试与SQL监控插件【步骤】
javascript中的try catch异常捕获机制用法分析
Laravel如何使用API Resources格式化JSON响应_Laravel数据资源封装与格式化输出
利用JavaScript实现拖拽改变元素大小
如何快速搭建高效简练网站?
Laravel怎么处理异常_Laravel自定义异常处理与错误页面教程
如何在阿里云购买域名并搭建网站?
Laravel如何实现用户注册和登录?(Auth脚手架指南)
如何用花生壳三步快速搭建专属网站?
如何为不同团队 ID 动态生成多个“认领值班”按钮
Laravel项目如何进行性能优化_Laravel应用性能分析与优化技巧大全
1688铺货到淘宝怎么操作 1688一键铺货到自己店铺详细步骤
头像制作网站在线观看,除了站酷,还有哪些比较好的设计网站?
php做exe能调用系统命令吗_执行cmd指令实现方式【详解】
标准网站视频模板制作软件,现在有哪个网站的视频编辑素材最齐全的,背景音乐、音效等?
悟空识字如何进行跟读录音_悟空识字开启麦克风权限与录音
如何快速配置高效服务器建站软件?
使用C语言编写圣诞表白程序
Laravel Eloquent:优雅地将关联模型字段扁平化到主模型中
如何在腾讯云服务器上快速搭建个人网站?
Laravel Vite是做什么的_Laravel前端资源打包工具Vite配置与使用
如何在Windows 2008云服务器安全搭建网站?
Laravel怎么连接多个数据库_Laravel多数据库连接配置
如何安全更换建站之星模板并保留数据?
如何在搬瓦工VPS快速搭建网站?
Laravel怎么解决跨域问题_Laravel配置CORS跨域访问
mc皮肤壁纸制作器,苹果平板怎么设置自己想要的壁纸我的世界?
Mybatis 中的insertOrUpdate操作
安克发布新款氮化镓充电宝:体积缩小 30%,支持 200W 输出
浅谈javascript alert和confirm的美化
Laravel如何获取当前登录用户信息_Laravel Auth门面使用与Session用户读取【技巧】
成都网站制作公司哪家好,四川省职工服务网是做什么用?
如何在IIS服务器上快速部署高效网站?
奇安信“盘古石”团队突破 iOS 26.1 提权
Laravel如何实现用户角色和权限系统_Laravel角色权限管理机制
Laravel如何生成PDF或Excel文件_Laravel文档导出工具与使用教程
Win11怎么更改系统语言为中文_Windows11安装语言包并设为显示语言
Swift开发中switch语句值绑定模式
Laravel如何使用查询构建器?(Query Builder高级用法)
edge浏览器无法安装扩展 edge浏览器插件安装失败【解决方法】
如何用腾讯建站主机快速创建免费网站?
Laravel如何使用Vite进行前端资源打包?(配置示例)
EditPlus 正则表达式 实战(3)
,怎么在广州志愿者网站注册?
网站制作报价单模板图片,小松挖机官方网站报价?
北京网站制作费用多少,建立一个公司网站的费用.有哪些部分,分别要多少钱?
Laravel怎么在Blade中安全地输出原始HTML内容
怎么用AI帮你设计一套个性化的手机App图标?
Laravel如何实现RSS订阅源功能_Laravel动态生成网站XML格式订阅内容【教程】

