将React应用程序部署到Microsoft Azure似乎很简单,但存在隐藏的复杂性。本指南重点侧重于将创建反应应用(或使用PushState路由类似的前端框架)部署到Azure,以最大程度地减少客户端服务器路由冲突。
简短的轶事说明了挑战:在一个先前的项目中,带有React前端和ASP.NET核心后端分别部署到Azure中,Page Refres由于路由错误配置而导致404个错误。这突出了需要适当的服务器端配置来处理客户端路由。
生产就绪的反应构建
构建用于生产的React应用程序(使用npm run build
)会创建一个包含静态资产的优化build
文件夹。将此文件夹部署到服务器足以实时应用程序。结构通常类似于:
<code>→ build → static → css → css files → js → js files → media → media files → index.html → other files...</code>
用React路由器的客户端路由
React路由器利用HTML5 PUSHSTATE API。 PushState无需全页重新加载即可更新URL,从而启用客户端路由。但是,这在部署到服务器时会带来挑战。标准服务器希望找到与URL路径匹配的文件;使用客户端路由,情况并非如此。必须将服务器配置为为所有路线服务index.html
。
例如,Express.js需要此配置:
app.get('*',(req,res)=> { res.sendfile(path.resolve(__ dirname,'client','build','index.html')); });
假设React应用程序托管在服务器根部。对于单独的前端和后端项目,此方法是有问题的。由于我们正在部署静态应用程序,因此不需要后端。
Azure应用服务部署
部署到Azure:
- 在Azure Portal中创建新的应用程序服务。
- 导航到部署中心。我们将将与Kudu的本地Git一起用作建筑提供商。
- Azure提供git远程URL;克隆本地。
- 构建了React应用程序(
npm run build
)后,在build
文件夹中初始化GIT存储库,提交更改并将其推向Azure遥控器。
至关重要的是,确保您的package.json
为Azure指定了支持的Node.js版本(使用az webapp list-runtimes
检查可用版本)。添加类似"engines": {"node": "10.0"}
。
由于404错误,初始部署可能会在页面刷新上失败。
协调Azure中的客户服务器路由
要解决此问题,请在build
文件夹中添加web.config
文件:
<configuration> <system.webserver> <rewrite> <rules> <rule name="React Routes" stopprocessing="true"> <match url=".*"></match> <conditions logicalgrouping="MatchAll"> <add input="{REQUEST_FILENAME}" matchtype="IsFile" negate="true"></add> <add input="{REQUEST_FILENAME}" matchtype="IsDirectory" negate="true"></add> <add input="{REQUEST_URI}" negate="true" pattern="^/(api)"></add> </conditions> <action type="Rewrite" url="/"></action> </rule> </rules> </rewrite> </system.webserver> </configuration>
重建和重新部署。该应用程序现在应该正确运行。对于连续部署,请探索Azure的连续集成/连续部署(CI/CD)功能。
结论
Azure为部署React应用程序提供了强大的功能。了解客户服务器路由交互是成功部署的关键。建议在Azure上进行kudu,node.js部署和静态站点部署的更多资源,以深入了解。
以上是将客户端渲染的create-react-app应用到Microsoft Azure的详细内容。更多信息请关注PHP中文网其他相关文章!

我知道,我知道:有大量的内容管理系统选项可用,而我进行了几个测试,但实际上没有一个是一个,y&#039;知道吗?怪异的定价模型,艰难的自定义,有些甚至最终成为整个&

链接CSS文件到HTML可以通过在HTML的部分使用元素实现。1)使用标签链接本地CSS文件。2)多个CSS文件可通过添加多个标签实现。3)外部CSS文件使用绝对URL链接,如。4)确保正确使用文件路径和CSS文件加载顺序,优化性能可使用CSS预处理器合并文件。

选择Flexbox还是Grid取决于布局需求:1)Flexbox适用于一维布局,如导航栏;2)Grid适合二维布局,如杂志式布局。两者在项目中可结合使用,提升布局效果。

包含CSS文件的最佳方法是使用标签在HTML的部分引入外部CSS文件。1.使用标签引入外部CSS文件,如。2.对于小型调整,可以使用内联CSS,但应谨慎使用。3.大型项目可使用CSS预处理器如Sass或Less,通过@import导入其他CSS文件。4.为了性能,应合并CSS文件并使用CDN,同时使用工具如CSSNano进行压缩。

是的,youshouldlearnbothflexboxandgrid.1)flexboxisidealforone-demensional,flexiblelayoutslikenavigationmenus.2)gridexcelstcelsintwo-dimensional,confffferDesignssignssuchasmagagazineLayouts.3)blosebothenHancesSunHanceSlineHancesLayOutflexibilitibilitibilitibilitibilityAnderibilitibilityAndresponScormentilial anderingStruction

重构自己的代码看起来是什么样的?约翰·瑞亚(John Rhea)挑选了他写的一个旧的CSS动画,并介绍了优化它的思维过程。

CSSanimationsarenotinherentlyhardbutrequirepracticeandunderstandingofCSSpropertiesandtimingfunctions.1)Startwithsimpleanimationslikescalingabuttononhoverusingkeyframes.2)Useeasingfunctionslikecubic-bezierfornaturaleffects,suchasabounceanimation.3)For

@keyframesispopularduetoitsversatoryand and powerincreatingsmoothcssanimations.keytricksinclude:1)definingsmoothtransitionsbetnestates,2)使用AnimatingmatematingmultationmatingMultationPropertiessimultane,3)使用使用4)使用BombingeNtibalibility,4)使用BombingingWithjavofofofofofoffo


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

螳螂BT
Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。

EditPlus 中文破解版
体积小,语法高亮,不支持代码提示功能

VSCode Windows 64位 下载
微软推出的免费、功能强大的一款IDE编辑器

ZendStudio 13.5.1 Mac
功能强大的PHP集成开发环境

PhpStorm Mac 版本
最新(2018.2.1 )专业的PHP集成开发工具