使用 Node-React Web 应用程序进行 Nodemon 和/或热重载

IT技术 node.js reactjs module reload nodemon
2021-05-14 11:09:47

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

当涉及到这两个依赖项时,它是一个还是另一个?它们应该一起使用,还是有点多余?

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

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

谢谢你。

1个回答

对花哨的术语进行脱糖,它们基本上是在做同样的事情——“密切关注(观察)你的本地编辑(文件系统更改)并为你更新应用程序”,因此它们都是旨在促进的开发工具/加速你的开发过程。(不适用于生产)

Nodemon 负责你的服务器端(Express),而 Webpack(观察模式)在客户端(React)。

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

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

  1. hot-module-replacement - 无需完全重新加载即可重新编译更改的module
  2. webpack-dev-middleware - 通过连接的服务器提供结果

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

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

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

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