我的问题是,我必须分别部署ReactJS和NodeJS / ExpressJS吗?还是可以一起部署在一起?
另外,我的堆栈提到的任何好的指南?看起来,但似乎都是特定的,无论是NodeJS还是ReactJS.最近发现它为https://www.youtube.com/watch?v=WxhFq64FQzA,但我相信它只涵盖了NodeJS / ExpressJS而不是ReactJS.
目前该应用程序是一个项目,包括所有的ReactJS NodeJS / ExpressJS Webpack / Babel.
解决方法
例如一个React single-page app和一个Node / Express API.
一个.你可以部署
> S3和CloudFront(tutorial)的前端(React应用)
>后端(Node API)在Elastic Beanstalk(推荐)或EC2
否则,您可以在Elastic Beanstalk或EC2上同时部署两个部件.在这样做时,您会错过在S3和CloudFront上托管的好处,即为用户提供更快的交付和更便宜的成本.在我看来,它更容易,更快速,更实用,更不容易出现错误,可以单独更新和部署Web应用程序的客户端和服务器端.
湾为什么S3 CloudFront而不是S3?
>所有the benefits of using a CDN
>您自己的域名和一个免费的SSL证书一键
>重定向4xx错误(如果您的应用程序使用基于HTML5历史记录的路由器,则必需)
>缓存系统
> http2
和http到https重定向
C.如何处理CORS?
您可以使用不同的子域,例如
> API的api.domain.com
> app.domain.com的应用程序
然后enable CORS在API中:
app.get('/api',cors({ origin: 'https://app.domain.com' }),...)
2.如果你有一个项目
例如一个Node应用程序,包括一些React视图.
您必须在Elastic Beanstalk或EC2部署整个应用程序.
注意:如果您有一个项目,包括两个子项目(即React应用程序的文件夹,另一个用于Node API),并且如果两个子项目在分离时仍然可以工作,那么可以部署子项目,项目分开(见答案的第一部分).
在这两种情况下
在部署React部件之前运行您的Webpack/Babel production build.您可以手动执行(在部署在AWS之前)或自动(在CI/CD系统中).
4.如果不限于AWS
我刚刚回答a related question不限于AWS.