将 Express.js 与 React.js 一起使用的推荐方式?

Posted

技术标签:

【中文标题】将 Express.js 与 React.js 一起使用的推荐方式?【英文标题】:Recommended way for using Express.js with React.js? 【发布时间】:2019-04-11 05:55:00 【问题描述】:

我找到了两种结合 React 和 Express 的方法:

[选项 1] ExpressJS 提供 React 静态文件

从根本上说,这里的想法是在启动服务器之前拥有预编译的 javascript 文件供您使用。然后在 Express 中间件中:

app.use(express.static(path.join(__dirname, '../client/build')));

然后有其他端点在服务器端执行逻辑。

[选项 2] 单独托管 React 文件

基本上,将前端和后端的整体逻辑与一台服务器解耦,仅用于提供静态 JS 文件。然后是另一个 Express 服务器,用于对数据库运行任何查询。并返回简单的 JSON 响应。

推荐的方式是哪一种?使用一种方法比另一种方法有优势吗?

【问题讨论】:

我还没有听说过推荐的方法,我已经用 React 应用程序构建了几个 Express。你的应用是做什么的?你的目标是什么? 我正在开发一个已经存在于生产环境中的应用程序。但我想知道他们是否采取了正确的方法。该应用程序本身有两个门户,具体取决于用户类型(想想教师/学生交换作业)。除此之外,它还有另一个应用程序,它有一个单独的前端(想想代码提交环境)。 【参考方案1】:

这是一个自以为是的问题,所以我只能给出一个自以为是的回答。

我个人推荐选项 1,因为当您分离前端和后端时,您会在很多地方遇到跨域资源共享 (CORS) 问题。这并不是说它不能完成,但这将是你必须处理的一件烦人的事情。

使用选项 2,您很可能还必须使用绝对 URL 路径向后端发送任何请求,这在应用程序扩展时可能很难维护。

使用选项 1,您将拥有更大的灵活性、更少的维护和更少烦人的解决方法。

【讨论】:

以上是关于将 Express.js 与 React.js 一起使用的推荐方式?的主要内容,如果未能解决你的问题,请参考以下文章

express.js 和 react.js cookie 保存到浏览器但不工作?

如何通过 Express JS 服务器使 React JS 和 Socket IO 连接在一起?

如何为 api 部署 node js express js,为前端部署 react js,为管理员部署 angular

使用 node.js 和 react.js 客户端启动一个 firebase 功能项目

Express.js - 可以找到我的路线

在没有用户登录 react.js 和 redux 的情况下将商品添加到购物车