【问题标题】:Using ReactJS with NodeJS将 ReactJS 与 NodeJS 一起使用
【发布时间】:2017-12-03 16:47:51
【问题描述】:

我有一个应用程序需要与 UI 交互并对后端的数据库执行各种 CURD 操作,

目前我有一个 Angular 1.2 应用程序,它有 UI 和另一个节点应用程序,并且对于每个需要的交互,Angular 应用程序都会向节点应用程序发送 http 请求,所以这里我有两个不同的服务。

我想将这些操作组合成一个单一的服务意味着 UI(React) 和节点在一个单一的服务中,比如在节点内做出反应,当我启动节点服务器时,我也应该能够通过 UI 访问,我正在使用 express在节点中,在单个服务中使用 ReactJS 和 Node 的最佳方法是什么。

【问题讨论】:

    标签: node.js reactjs


    【解决方案1】:

    希望您将 express 与 nodejs 一起使用。您可以将 react 应用程序文件夹放在节点应用程序文件夹中的某个名为 client 的文件夹中。然后从节点应用程序中,您可以对服务器反应文件执行以下操作:

    var app = express();
    app.use(express.static(path.join(__dirname, 'client')));
    

    在为您的 api 提供所有特定于应用程序的路由之后,提供以下内容以为所有其他 get 请求提供 index.html。

    app.get('*', (req, res) => {
      res.sendFile(path.join(__dirname+'/client/index.html'));
    });
    

    【讨论】:

      【解决方案2】:

      为了执行来自 React 应用程序的 http 请求(不管你的后端是否是节点),我建议使用fetch api

      fetch(url)
        .then(response => response.json())
        .then(response => /* Do what you need with it */)
      

      Axios 也可以很好地工作并提供相同的结果:

      axios.get(url)
        .then(response => response => /* Do what you need with it */)
        .catch(error => console.log(error))
      

      【讨论】:

      • 一旦我在一项服务中做出反应和节点,我猜我就不需要制作 https 了。
      • 不,您仍然需要从 react 应用程序到节点应用程序进行 http 调用。即使它托管在同一台服务器上,您的 react js 文件也会下载到浏览器并从浏览器运行,而您的 node js 文件将保留在托管它的服务器中。因此,您仍然需要使用 fetch 或 axios 通过 http 进行通信。
      猜你喜欢
      • 1970-01-01
      • 2020-09-21
      • 2016-12-03
      • 2017-08-06
      • 2015-03-13
      • 2023-04-09
      • 1970-01-01
      • 1970-01-01
      • 2015-07-24
      相关资源
      最近更新 更多