【问题标题】:Is it possible to have an Apollo server, serve the React client for the same app?是否可以有一个 Apollo 服务器,为同一个应用程序服务 React 客户端?
【发布时间】:2020-09-24 07:05:03
【问题描述】:

我是服务器上的 Apollo 和 JS 的新手,但对 React、GraphQL 等并不陌生。我正在尝试用一种干净的方式让服务器使用 Apollo 为 API 提供服务,但是还有客户端,它将使用 ReactJS 和 Apollo 构建。

我阅读了有关 Apollo 的服务器端渲染的文章。将来我可能对此感兴趣,但现在,我只对从单个服务器部署的单个项目感兴趣,而不是两个。

是否可以干净地做到这一点?有没有规范的方法呢?它可以使用 create-react-app 还是不可能?

【问题讨论】:

    标签: node.js apollo


    【解决方案1】:

    如果您不进行服务器端渲染,而只想像使用 CRA 构建的那样提供单页应用程序 (SPA),则可以使用几乎任何 HTTP 框架,甚至不使用任何 HTTP 框架来实现。 CRA 只是为您构建了一些静态内容,您可以使用例如 Express 来提供这些内容(请参阅文档 here)。但是,使用 Nginx 或 Apache 来提供此内容(至少在生产中)通常是 better。如果您想使用 Express 或其他 HTTP 框架来提供文件,您可以为 Apollo Server 使用适当的 integration。如果您使用的是 Nginx,那么您可以坚持使用独立库,前提是您不想在 HTTP 服务器上公开任何额外的路由。

    在开发过程中,您不希望在进行更改时不断手动重建您的 React 应用程序,因此 CRA 实际上为您运行了一个服务器来为应用程序提供服务并启用热重载。因为这是一个独立于 API 服务器的服务器,所以您通常需要启用 proxying your requests to the API

    【讨论】:

    • 老实说,我不太清楚如何安排 CRA 的输出在静态文件上或在部署到 Heroku 时表达(以及如何处理环境配置)情况下,当我无法使用 mars/create-react-app 时)。
    【解决方案2】:

    有可能,apollo 的设置与任何服务器相同,例如,您可以使用express to serve static files 并通过一些小的更改来实现 apollo,请参阅apollo server express 的文档并实现您熟悉的那个

    【讨论】:

      猜你喜欢
      • 2021-06-16
      • 2011-05-06
      • 1970-01-01
      • 1970-01-01
      • 2020-08-10
      • 1970-01-01
      • 1970-01-01
      • 2020-03-09
      • 1970-01-01
      相关资源
      最近更新 更多