天蓝色阅读应用设置上的角度2应用

时间:2017-03-06 19:39:02

标签: angularjs azure azure-deployment-slots

我想使用VSTS CI / CD将角度2应用程序部署到不同的Web应用程序插槽(让我们说dev,staging和prod)。每个插槽应指向不同的Web api。通常会在应用程序中指定三个不同的环境文件,但缺点是我必须在不同环境下构建三次。

我想要实现的只有两个版本,dev和prod。将dev部署到dev插槽,并将prod build部署到staging,然后将相同的build部署到生产槽。我可以为每个插槽定义应用设置。它们被视为环境变量。

有没有办法从有角度的2应用程序中读取这些配置设置,或者我错过了其他内容?

2 个答案:

答案 0 :(得分:2)

由于您错过了代码缩小和捆绑生产服务器,我不鼓励您将两个/三个相同的构建部署在一起。

可以做的是在VSTS中设置构建任务:例如,当您的代码被推送到生产分支时,您可以运行npm your-build-task --prod,并且只需{{1当推送到主人或开发分支等时

在AppModule(或您提供服务的任何模块中)中,您可以设置以下内容:

npm yourbuild-task

这样,您可以在每个配置对象中设置基本URL:一个指向prod,一个指向dev,您只需注入API_CONFIG即可获得正确的基本API URL。

但是,如果你想保持相同的构建,你可以做同样的事情,但在你的providers: [ ... { provide: API_CONFIG, useFactory: apiConfigFactory } ... ] ... export function apiConfigFactory() { if (environment.production) { return MY_PROD_API_CONFIG; } else { return MY_DEV_API_CONFIG; } } 功能中,你需要一些逻辑来区分环境:说比如检查浏览器的基本apiFactoryConfig网址或类似内容。

答案 1 :(得分:1)

只有后端语言可以在运行时将APP设置作为环境变量访问。由于Angular 2位于正面,我们无法直接从前端读取这些设置。解决方法是通过后端读取应用程序设置,公开端点,然后通过Angular 2应用程序中的AJAX调用访问此端点。

您可以查看我发布PHP示例代码的my earlier post以阅读APP设置。