【发布时间】: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 服务器中,但我想要一种更自动化的方式来执行此操作。谢谢!