Nodemon and/or 使用 Node-React Web 应用程序热重载

Nodemon and/or Hot Reloading with a Node-React Web App

在使用 webpack 配置 Web 应用程序以创建最佳开发体验方面,我仍然很陌生。我参加了两门不同的 Node-React 课程:一门我们使用 nodemon 跟踪更改,另一门我们实现热重载。

说到这两个依赖关系,是一个还是另一个?它们应该一起使用,还是有点多余?

此外,如果我在客户端使用带有 React 的快速服务器,我会使用 react-hot-loader、webpack-hot-middleware 还是两者都使用?我对采用哪种热重载方法感到困惑,因为似乎有很多方法可以做到这一点。

此外,当我将 nodemon 用作包装器时 (nodemon --exec babel-node server.js),我的热模块重新加载不起作用,但我仍然发现自己需要一种轻松重启的方法服务器。

谢谢。

去除花哨的术语,它们基本上做同样的事情 - "keep an eye (watch) on your local edits (file system changes) and updates the app for you",因此它们都是旨在 facilitate/speedup 您的开发过程的开发工具。(不适用于生产)

Nodemon 负责您的服务器端 (Express),而 Webpack (watch 模式) 负责客户端 (React)。

没有太多魔法,Nodemon 只需 restarts/reloads 文件更改时的快速服务器,否则您需要手动终止并重新启动。

但是,Webpack(启用了监视模式,通常在开发周期中)有点复杂,它会监视您的客户端代码更改,但是在

的帮助下
  1. hot-module-replacement - 重新编译更改的模块而不完全重新加载
  2. webpack-dev-middleware - 通过连接的服务器提供结果

重新编译过程非常快,可以通过以下任一方式从本地开发服务器提供服务:

  • webpack-dev-server 提供更改的模块和实时重新加载(连接到浏览器并硬刷新页面)
  • webpack-dev-middleware + Express/Koa 服务器,可以做同样的事情,但你可以获得更多的控制权,比如提供静态文件或创建一些 api 路由。

尽管实时重新加载很酷,但由于页面的硬刷新会导致应用程序丢失所有客户端状态(破坏许多开发工具,例如 redux 开发工具),react-hot-loader 在这种情况下会派上用场。

一般来说,根据您的 Express + React 应用程序,我会为 Express 设置 Nodemon。对于 React,如果您希望开箱即用的独立开发服务器,请选择 webpack-dev-server + react-hot-loader,或者您希望在现有 Express 服务器之上集成开发服务器并进行一些自定义,请使用 webpack-dev-middleware + react-hot-loader 代替。 (无论如何都需要将 HMR 添加为 webpack 插件)