数智应用帮
柔彩主题三 · 更轻盈的阅读体验

开发环境配置热更新,告别频繁重启

发布时间:2025-12-24 17:41:09 阅读:199 次

写代码最烦什么?改一行代码就得重新启动服务,等个十几秒才能看到效果。尤其是做前端开发的时候,刷新页面、加载资源,一套流程走下来,一杯咖啡都凉了,效率直接打对折。

更新是啥?

简单说,热更新(Hot Module Replacement,简称 HMR)就是你在改了代码之后,浏览器不用刷新整个页面,只替换你修改的那一小块模块。比如你改了个按钮颜色,页面上这个按钮立刻变色,其他内容纹丝不动。

这感觉就像修车不用拆发动机,拧个螺丝就搞定,省时又顺手。

怎么在项目里配热更新?

以 Webpack 为例,它原生支持 HMR。先确保你用的是开发模式:

"scripts": {
  "dev": "webpack serve --mode=development"
}

然后在 webpack.config.js 里启用热更新:

module.exports = {
  devServer: {
    hot: true,
    open: true
  }
};

这样启动后,你改任何模块,只要它支持 HMR,页面就会局部更新。

React 项目怎么配?

如果你用 React,可以装 react-refresh-webpack-plugin,让函数组件也能热更新。

npm install -D @pmmmwh/react-refresh-webpack-plugin react-refresh

配置文件加上插件:

const ReactRefreshWebpackPlugin = require('@pmmmwh/react-refresh-webpack-plugin');

module.exports = {
  plugins: [
    new ReactRefreshWebpackPlugin()
  ],
  module: {
    rules: [
      {
        test: \/\.js$/,
        exclude: /node_modules/,
        use: [
          {
            loader: 'babel-loader',
            options: {
              plugins: ['react-refresh/babel']
            }
          }
        ]
      }
    ]
  }
};

配完之后,哪怕你改了个状态初始化的逻辑,组件也能保留当前状态直接更新,不用重走一遍操作流程。

Vue 用户呢?

Vue CLI 创建的项目默认就开了热更新。你运行 npm run serve 的时候,背后启动的就是 webpack-dev-server,保存文件自动更新,连配置都不用动。

自己搭 Vue + Vite 的话更简单,Vite 天生支持极速 HMR,改完代码基本是秒响应,连等待都感觉不到。

别忘了 Node 后端也能热更新

前端能热更新,后端就不能享受?当然能。用 nodemon 监听文件变化,自动重启服务:

npm install -g nodemon

然后把启动命令换成:

nodemon server.js

你改个路由或者接口逻辑,保存后自动重启,调试效率翻倍。

有些框架比如 NestJS,配合 nest start --watch 也能实现类似效果,根本不用手动敲命令。

遇到热更新不生效?检查这些点

有时候改了代码没反应,可能是这几个原因:

  • 文件没被 webpack 正确监听 —— 检查 entry 入口和 loader 配置
  • HMR 被禁用了 —— 确保 devServer.hot 是 true
  • 模块不支持热更新 —— 加个判断兜底:
if (module.hot) {
  module.hot.accept('./component', () => {
    console.log('组件已更新');
  });
}

这样即使不支持,也不会报错。

热更新不是魔法,但它让写代码的过程变得更流畅。就像电动车比手动挡省力,你专注在解决问题本身,而不是重复操作上。