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

2024-03-10

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

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

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

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

谢谢。


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

Nodemon负责服务器端(Express),而 Webpack(监视模式)则负责客户端(React)。

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

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

  1. 热模块更换 https://webpack.js.org/concepts/hot-module-replacement/- 重新编译更改的模块而不完全重新加载
  2. webpack-dev-中间件 https://github.com/webpack/webpack-dev-middleware- 通过连接的服务器提供结果

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

  • webpack-开发服务器 https://github.com/webpack/webpack-dev-server提供更改的模块和实时重新加载(连接到浏览器并硬刷新页面)
  • webpack-dev-中间件 https://github.com/webpack/webpack-dev-middleware+ Express/Koa 服务器,可以执行相同的操作,但您可以获得更多控制,例如提供静态文件或创建一些 api 路由。

尽管实时重新加载很酷,但由于页面的硬刷新会导致应用程序丢失所有客户端状态(破坏许多开发工具,例如 redux 开发工具),反应热加载器 https://github.com/gaearon/react-hot-loader在这种情况下来救援。

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Nodemon 和/或使用 Node-React Web 应用程序进行热重载 的相关文章

  • Node.js 中没有请求状态 Morgan Logging

    我正在 Azure VM 上运行 node js 应用程序 使用 PM2 处理负载平衡和重新启动 这是服务器设置和日志记录代码 var logger require morgan var app express app set views
  • 如何使用 jest 通过 Promise.all 设置多次提取测试

    我在测试中使用 jest 我正在使用 React 和 Redux 并且执行以下操作 function getData id notify return dispatch gt dispatch anotherFunction Promise
  • keystonejs 模型中的动态类型选择

    我想在 adminUI 中使用一个组合框 其中包含来自 Web 服务的字段 我正在考虑使用预 查找 挂钩获取数据 然后覆盖模式中 受众 属性的选项属性 Schema Compliance add title type Types Text
  • 过滤嵌套的 JSON 对象

    我有一个搜索栏 您可以在其中输入员工姓名 它应该根据过滤器返回姓名 我有一个嵌套的 JSON 对象 如下所示 我需要深入了解该对象以访问数组中的员工姓名 您可以看到我尝试实现的多个选项 它们已被注释掉 我的问题是代码没有过滤名称并返回所有名
  • 模拟节点外部模块默认使用 jest 的链式方法

    在我们的节点 CLI 中 我们有一个简单的方法 use strict const ora require ora module exports function startSpinner textOnStart color spinnerT
  • 如何从 Node.js 中的 Http.IncomingMessage 检测 http 与 https

    给定一个Http IncomingMessage由一个创建http s Server为了响应请求 检测请求是否是 http 与 https 的正确 推荐方法是什么 一些我不知道的随机想法是否正确 检查端口 seems wrong might
  • Socket.io 与服务器离线连接

    如何检测服务器是否离线或由于其他原因无法连接 我的代码看起来像这样 this socket io connect connectionInfo reconnect false 它不会抛出任何错误 因此 try catch 子句不起作用 Us
  • 如何调试 Node.js 应用程序?

    如何调试 Node js 服务器应用程序 现在我主要使用警报调试打印语句如下 sys puts sys inspect someVariable 一定有更好的调试方法 我知道谷歌浏览器 http en wikipedia org wiki
  • python 中的 win32con 模块是什么?我在哪里可以找到它?

    我正在构建一个在 Windows 中使用 python 和 c 的开源项目 我收到以下错误消息 ImportError No module named win32con 同样的情况也发生在它正在运行的 预构建 代码中 除了我的电脑 P 我认
  • Facebook SDK 登录/注销 ngrok

    我正在尝试将我正在构建的网络应用程序与 Facebook 集成 Facebook 现在要求所有 API 调用都必须从 https 站点进行 我正在构建的这个应用程序只是为了好玩 所以我使用的是 localhost 我在用着ngrok将我的请
  • Google API、drive.files.list 和仅返回子文件

    我正在使用 谷歌API https www npmjs com package googleapis NodeJS 中的库 我试图返回当前指定文件夹中的文件和文件夹列表 但我发现drive files list返回用户已被授予读取权限的所有
  • 有什么不同? .on“连接”与.on“连接”

    我很难理解以下之间的区别 io on connection function io on connect function 可能是一个相当原始的问题 但是我无法找到有关它的明确文档 很想了解其中的区别 这些是同一事物的不同名称 正如所写so
  • Node.js Async/Await 模块导出 [重复]

    这个问题在这里已经有答案了 我对模块创建有点陌生 想知道 module exports 并等待异步函数 例如 mongo connect 函数 完成并导出结果 在模块中使用 async await 正确定义了变量 但是当尝试通过要求模块来记
  • Sequelize WHEREsequelize.fn(...) AND some='something' 排序问题

    我有一个 Sequelize findOne 函数 它会选择给定点与多边形 col geom 相交且状态 active 的行 var point sequelize fn ST GeomFromText POINT lng lat 4326
  • 在生产中使用 babel-node 可以吗

    我一直在使用 babel node 和 browserify 以及 babelify 转换来开发一个网站 以支持 ES6 语法 我只是想知道 我可以在生产中运行它吗 babel node server 而不是 node server 要在
  • 变量前面加双下划线

    我的节点代码中有以下代码片段 var fs require fs fs readdir dirname function err files console log files 为什么变量 dirname 有双下划线 我知道一个下划线是私有
  • 语法:const {} = 变量名,任何人都可以解释或指出我正确的方向[重复]

    这个问题在这里已经有答案了 这个语法在 JavaScript 中意味着什么 可能是 ES6 const 变量名 我目前正在尝试掌握 React 在很多例子中我都遇到过这种语法 例如 const girls guys women men st
  • 错误:找不到模块“jasmine-core”

    我安装了以下内容进行测试 devDependencies jasmine core 2 4 1 karma 0 13 22 karma jasmine 0 3 7 karma phantomjs launcher 1 0 0 运行后karm
  • 全局未在 ../node_modules/socket.io-parser/is-buffer.js 中定义

    预先感谢您帮助我 我正在尝试在我的一个角度组件中连接套接字 但在浏览器的控制台中它会抛出一个错误 指出 Global 未在 Object node modules socket io parser is buffer js 中定义 这是我的
  • 如何正确导入主代码和模块中同时使用的模块?

    假设我有一个主脚本 main py 它导入另一个 python 文件import coolfunctions另一个 import chores 现在 假设 Coolfunctions 也使用家务活中的东西 因此我声明import chore

随机推荐