【问题标题】:Using PHP backend with React Application将 PHP 后端与 React 应用程序一起使用
【发布时间】:2019-06-16 12:03:05
【问题描述】:

我有一个 react 应用程序,我运行 npm run build 来生成我上传到 S3 的构建包。假设 www.test.com/build/

但我有一个 PHP 后端应该负责提供 index.html(来自 www.test.com/index.html)

由于与 S3 存储桶和 PHP 应用程序没有联系,我不知道如何处理 react 应用程序中的散列名称

我无法生成没有哈希的构建包,因为我会丢失缓存破坏器。

使用 React 应用和后端应用有哪些好的做法。在这种情况下是 PHP,但我认为问题应该与托管在不同服务器中的 NodeJS 后端相同。

我正在使用 AWS CodePipeline 构建 react 应用程序(npm run build)和 php 应用程序(composer install)

【问题讨论】:

  • s3 所能做的就是提供静态文件。你在某处运行php吗?在没有 php 服务器的情况下,您无法从 s3 运行 php 脚本。
  • 正确。 S3 只有 /build 目录,PHP 服务器需要以某种方式包含这些 .JS 文件,但由于文件名是散列的,我不能只包含它们。
  • PHP 不需要包含您的 .JS 文件。您应该将您的域指向 s3 存储桶而不是您的 php 服务器,然后创建一个子域,例如api.test.com 访问您的 PHP API。通过fetch或其他ajax方法访问API
  • 但是,如果您仍然希望 PHP 作为入口点,则需要查看服务器端渲染。这是一篇可能对您有所帮助的博文sebastiandedeyne.com/server-side-rendering-javascript-from-php
  • @kkesley 我不是在寻找服务器端渲染。基本上我需要在 S3 和 PHP 应用程序(弹性 beranstalk)中托管所有访问,只需将 index.html 呈现为入口点。简单的方法是部署到 s3。复制 /public/index.html 并将其作为 index.php 粘贴到 PHP 服务器中,但我想要一种更自动化的方式来执行此操作。谢谢!

标签: php reactjs amazon-s3


【解决方案1】:

PHP 不需要知道带有或不带有哈希的 JS 文件。您的 PHP 服务器将只提供 index.html 文件。您的 index.html 文件包含入口点 javascript 文件。

<script type="text/javascript" src="/js/vendor.bundle.js"></script>
<script type="text/javascript" src="/js/index.js"></script>

当您的 PHP 服务器提供 index.html 文件时,在客户端的浏览器上,它将使用供应商和索引文件(或任何您的文件名)通过块加载必要的 react 和其他 js 代码。

如果您需要使用带有哈希的 vendor.bundle.js 和 index.js 怎么办?

以下模块将对您有所帮助。

模块 1:https://www.npmjs.com/package/webpack-manifest-plugin 该模块将帮助您跟踪生成的散列文件。

模块 2:https://www.npmjs.com/package/html-replace-webpack-plugin 使用此模块,您可以将入口点文件替换为从 module-1 获得的哈希文件名。

【讨论】:

    【解决方案2】:

    1.您可能知道这一点,但只是确认是否要在不将索引文件托管在(弹性 beranstalk)服务器上的情况下执行此操作,为什么不在索引文件上使用 &lt;iframe&gt; 标记。

    2.你可以使用$html = file_get_contents('http://stackoverflow.com/questions/ask');的php方法,比curl使用更少的代码和工作。

    1. curl 你已经知道了。

    【讨论】:

      猜你喜欢
      • 2017-07-07
      • 2014-09-02
      • 2020-10-30
      • 2011-10-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-22
      相关资源
      最近更新 更多