reactjs - React 站点怎么可能是静态的?
问题描述
我一直在开发一个带有 NodeJS/Express 后端的个人 React 项目(我对此还是很陌生)。作为完成项目的好方法,我想找出最终部署我的 React 应用程序的最佳方法(根据AWS 良好架构原则的 5 个支柱)。
尽管我有一些自己的想法,但我还是拿出了 google 并搜索了它(“部署 React 应用程序的最佳方法”),看看其他人是否已经通过最佳实践经历过这个。弹出的第一件事是这样的网站和这个。建议是“使用 S3 存储桶”或“将其放在 Github 页面上”。
我觉得我错过了一些东西:
- 当页面上的内容似乎根据某些请求和响应发生变化时,React 应用程序怎么可能是静态的?
- 我如何判断是否可以静态部署我的 React 应用程序(并单独部署我的后端)并将其放入 S3 存储桶中,或者我是否需要在服务器中运行我的 React 应用程序?
我一直认为我的应用程序是动态的,因为我允许用户执行注册和登录等操作......
谢谢
解决方案
没有动态 JS 驱动功能的 HTML 页面的“静态性”与静态站点不同。“静态”是指页面加载的资产,可以包括JS脚本资产。当您将服务器配置为像网站一样提供文件目录时,这就是静态站点。
React 应用程序(以及任何 JS 框架应用程序)不需要向服务器发出请求,尽管它们可以。您是否可以在不编写服务器代码的情况下构建静态站点取决于您的应用程序的用例。如果您需要存储用户数据,仅靠静态站点是不够的。
要解决您的第一个问题:为您的静态资产提供服务的服务器不必是处理响应您的应用程序请求的同一台服务器。我可以从后面的基于 nginx 的快速服务器提供我的静态资产,并处理路由到我的快速服务器的mysite.com
应用程序流量。api.mysite.com
这样,浏览器加载的页面是“静态的”,例如它总是接收相同的文件。但这些文件包含知道如何与我的应用服务器通信的脚本。
推荐阅读
- python - 为什么不能在 django admin 中隐藏 slug 字段?
- python - 在测试集(保留集)的特征选择期间丢弃特征后特征形状不匹配
- c++ - 编译器无法推断模板参数
- ios - 离子构建的角度错误:找不到模块'@ionic/angular-toolkit/package.json'
- dask - 如何连接到 oralce 数据库并使用 dask 将数据导入 csv 格式?
- c# - 将用户输入的十进制转换为整数
- python - Python 每小时滚动一次,同时跳过周末
- c++ - 混淆了两个不同的 MSDN 文档(ThreadWaitState)
- angular - 如何使用 graphql-codegen 从 apollo-angular 将图像上传到 apollo-server?
- ios - NSManagedObject 关系变更处理