前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >webpack热更新配置小结

webpack热更新配置小结

作者头像
IMWeb前端团队
发布于 2019-12-04 14:35:19
发布于 2019-12-04 14:35:19
92300
代码可运行
举报
文章被收录于专栏:IMWeb前端团队IMWeb前端团队
运行总次数:0
代码可运行

webpack热更新配置

热更新,可以使开发的人在修改代码后,不用刷新浏览器即可以看到修改后的效果。而它的另一个好处则是可以只替换修改部分相关的代码,大大的缩短了构建的时间。

热更新一般会涉及到两种场景下面的使用,一个是项目属于纯前端资源的,另一种是node工程项目。

纯前端资源配置

完整工程项目可参考github上面demo配置或者官方示例

配置过程内容比较多,这里大致描述下实现热更新能力需要做些什么。

首先安装相关的包,会发现热更新的能力主要是webpack-dev-server实现,它提供一个本地服务器,并且在内容发生变化时更新浏览器内容。而react-hot-loader主要作用是重刷react组件,非react项目中不要,这样配置又简化了。

然后在构建的配置文件中需要做一些配置,该配置作用是将热更新所需要的代码注入到入口js文件中

配置完成后,你只需要修改代码,静静的看着浏览器更新就好了。

react-hot-loader这个组件比较强大,可以在redux或者react native项目中使用。

node工程资源配置

这里配置方法与上面类似,在此基础之上多了一些配置

demo在github上可下载运行

首先, 我们需要一个中间件,嵌入到server中(server以koa2为例)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
npm i —save koa-webpack

koa-webpack其中主要依赖两个包webpack-dev-middleware和webpack-hot-middleware, 拆开来使用也可以,配置也都类似

第二步,修改构建配置文件

之前这里是使用server来刷新内容的,这种场景下是去掉了webpack-dev-server插件而使用webpack-hot-middleware实现

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
entry: {
    index: ['react-hot-loader/patch',
      'webpack-hot-middleware/client?path=/__webpack_hmr&timeout=20000',
      './src/index.js'
    ]
  }

第三步,在server中require这个中间件

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
const webpackMiddleware = require('koa-webpack');
const config = require('./webpack.config.babel');

第四步, 配置server所需要的参数

这里主要是config参数和dev.publicPath,其他参数可选而已,这里列出来看看

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
app.use(webpackMiddleware({
    config: config,
    dev: {
      publicPath: config.output.publicPath,
      // public path to bind the middleware to
      // use the same as in webpack
      // publicPath is required, whereas all other options are optional
      noInfo: false
    }
  }));

第五步,修改启动server

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
const http = require('http');
const server = http.createServer(app.callback());
server.listen(8080, () => {
  console.log('server running at http://127.0.0.1:8080');
});

启动程序后查看效果,修改代码后直接看浏览器内容是否更新

上面过程中可能遇到的问题
  1. 无法热更新,可能是服务器配置端口和构建中热更新插件的端口或路径不一致
  2. 入口js文件编译后,生成的资源的路径由参数dev.publicPath决定(因为文件是生成在内存中,由外部文件服务器来管理。这里不同于之前纯前端场景下路径由output.pathoutput.publicPath来控制)
  3. 生成环境和测试环境区分构建配置文件(好像是废话)
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017-02-04 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
使用webpack实现react的热更新
app 中自然就是源代码,app/index.js是最外层的js文件。因为涉及到是热更新,所以当然是在我们的 webpack.dev.js 文件下操作。
Nealyang
2019/09/29
3K0
使用webpack实现react的热更新
webpack中的HMR(热更新)原理剖析
Hot Module Replacement(以下简称 HMR)是 webpack 发展至今引入的最令人兴奋的特性之一 ,当你对代码进行修改并保存后,webpack 将对代码重新打包,并将新的模块发送到浏览器端,浏览器通过新的模块替换老的模块,这样在不刷新浏览器的前提下就能够对应用进行更新。
winty
2019/12/21
1.5K0
Webpack 如何配置热更新
是指 Hot Module Replacement,缩写为 HMR。对于你需要更新的模块,进行一个"热"替换,所谓的热替换是指在不需要刷新页面的情况下,对某个改动进行无缝更新。如果你没有配置 HMR,那么你每次改动,都需要刷新页面,才能看到改动之后的结果,对于调试来说,非常麻烦,而且效率不高,最关键的是,你在界面上修改的数据,随着刷新页面会丢失,而如果有类似 Webpack 热更新的机制存在,那么,则是修改了代码,不会导致刷新,而是保留现有的数据状态,只将模块进行更新替换。也就是说,既保留了现有的数据状态,又能看到代码修改后的变化。
发声的沉默者
2021/06/14
1.5K0
Webpack 如何配置热更新
webpack 热更新(实施同步刷新)
实现热更新,首先,安装一系列的node命令,如果嫌麻烦,你可以直接看解决方案二,相对来说比较简单。
White feathe
2021/12/08
8790
webpack 热更新(实施同步刷新)
从零搭建一个 webpack 脚手架工具(二)
配置完有关 CSS loader 后,还有一个问题,我们不想将 CSS 都插入到 style 标签中,如果 CSS 样式代码很多,会导致生成的 HTML 文件很大,我们希望使用 <link> 标签引入打包后的 CSS 文件(将 CSS 单独提取出来),这时候就要使用一个插件:mini-css-extract-plugin。
多云转晴
2019/12/16
1.5K0
webpack热更新原理(面试大概率会问)
这里说明一下,webpack4和webpack5的配置信息或者显示信息可能有点区别
gogo2027
2022/10/10
1K0
[探索]Webpack DevServer和HMR原理
原创不易,未经作者允许禁止转载!! Webpack-Dev-Server 为什么要搭建本地服务器 目前开发的代码,为了运行需要有两个操作 npm run build编译 通过live-server或者直接通过浏览器打开html文件,查看效果 为了完成自动编译,webpack提供了几种可选的方式 Webpack watch mode Webpack-dev-server Webpack-dev-middleware Webpack Watch Mode webpack提供了watch模式 在该模式下,web
前端LeBron
2021/12/08
2K0
[探索]Webpack DevServer和HMR原理
webpack原理(1):Webpack热更新实现原理代码分析
服务单与客户端通信方式有:ajax 轮询,EventSource、websockt。
周陆军博客
2023/03/18
1.4K0
Webpack 开发工具与模块热替换
静默虚空
2018/01/05
1.2K0
Webpack中的文件监听与热更新
2. 在配置 webpack.config.js 中设置 watch: true;
越陌度阡
2023/01/03
1.5K0
Webpack中的文件监听与热更新
webpack 热更新(HMR)实现原理
HMR(Hot Module Replacement)是webpack一个重要的特性,当代码文件修改并保存之后,webapck通过watch监听到文件发生变化,会对代码文件重新打包生成两个模块补丁文件manifest(js)和一个(或多个)updated chunk(js),将结果存储在内存文件系统中,通过websocket通信机制将重新打包的模块发送到浏览器端,浏览器动态的获取新的模块补丁替换旧的模块,浏览器不需要刷新页面就可以实现应用的更新。
伯爵
2020/04/27
3.3K0
看完这篇,面试再也不怕被问 Webpack 热更新
Webpack热更新( Hot Module Replacement,简称 HMR,后续均以 HMR 替代),无需完全刷新整个页面的同时,更新所有类型的模块,是 Webpack 提供的最有用的功能之一。
政采云前端团队
2019/12/20
9020
看完这篇,面试再也不怕被问 Webpack 热更新
显微镜下的webpack4入门
前端的构建打包工具很多,比如grunt,gulp。相信这两者大家应该是耳熟能详的,上手相对简单,而且所需手敲的代码都是比较简单的。然后webpack的出现,让这两者打包工具都有点失宠了。webpack比起前两者打包工具,对于前端程序员JS编程能力的要求还是挺高的。不过需要兼容ie8及以下的小伙伴们,就不要考虑webpack了,他很傲娇地不兼容!
小美娜娜
2019/04/04
6570
显微镜下的webpack4入门
彻底搞懂并实现 webpack 热更新原理
HMR即Hot Module Replacement是指当你对代码修改并保存后,webpack将会对代码进行重新打包,并将改动的模块发送到浏览器端,浏览器用新的模块替换掉旧的模块,去实现局部更新页面而非整体刷新页面。接下来将从使用到实现一版简易功能带领大家深入浅出HMR。
五月君
2021/11/10
3K0
彻底搞懂并实现 webpack 热更新原理
webpack4.0 CheatSheet
还在为webpack的配置而烦恼吗?这里有一份webpack从简易到高级版本的配置。还附赠配置地址,你想要吗?不,你不想。老老实实自己配置去吧。
小美娜娜
2019/04/04
8740
轻松理解webpack热更新原理
HMR作为一个Webpack内置的功能,可以通过HotModuleReplacementPlugin或--hot开启。那么,HMR到底是怎么实现热更新的呢?下面让我们来了解一下吧!
Nealyang
2019/12/10
2.8K0
轻松理解webpack热更新原理
webpack从0到1构建
webpack是一个静态打包工具,根据入口文件构建一个依赖图,根据需要的模块组合成一个bundle.js或者多个bundle.js,用它来展示静态资源
Maic
2022/07/28
1.3K0
webpack从0到1构建
webpack配置React开发环境(上)
Webpack 是一个前端资源加载/打包工具,我们部门的一条主要技术栈就是Webpack+React+ES6+node,虽然之前自己做个人项目也接触好多次Webpack,但是自己并没有研读总结过Web
牧云云
2018/05/02
1.7K0
webpack4配置详解之慢嚼细咽
经常会有人会问起 webpack、 react、 redux、甚至 create-react-app配置等等方面的问题,有些是我也不懂的,慢慢从大家的相互交流中,也学到了不少。
前端迷
2019/08/01
7820
webpack4配置详解之慢嚼细咽
React多页面应用1(​webpack开发环境搭建,包括Babel、热更新等)
本教程总共7篇,每日更新一篇,请关注我们,敬请期待! 1.React多页面应用1(webpack开发环境搭建,包括Babel、热更新等) ----2017.12.28 2.React多页面应用2(处理CSS及图片,引入postCSS及图片处理等)----2017.12.29 3.React多页面应用3(webpack性能提升,包括打包性能、提取公共包等)----2017.12.30 4.React多页面应用4(webpack自动化生成多入口页面)----2017.12.31 5.React多页面应用5(
前端人人
2018/04/11
1K0
React多页面应用1(​webpack开发环境搭建,包括Babel、热更新等)
相关推荐
使用webpack实现react的热更新
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验