是否有可能遵循“构建一次,在任何地方部署”的原则来构建angular
2个应用程序?
我一直在找到答案,告诉我要为每个环境单独构建它,但这不是我想要的。
我们正在使用docker
和tomcat
。
提前致谢。
答案 0 :(得分:1)
我认为加载动态配置的所有app的一个共同点就是使用名为var input = {
10: 1,
11: 1,
13: 1,
15: 1,
20: 1,
21: 2,
22: 2,
25: 2,
28: 3,
32: 1,
33: 3,
37: 1,
38: 1,
39: 2,
41: 1,
45: 2
};
function createKV(kv, isKey) {
var div = document.createElement("div");
div.style.width = "100px";
div.style.height = "100px";
var color = isKey ? "green" : "blue";
div.style.background = color;
div.style.color = "white";
div.innerHTML = kv;
var placing = isKey ? "keys" : "values";
document.getElementById(placing).appendChild(div);
}
for (var key in input) {
console.log(key);
createKV(key, true);
console.log(input[key]);
createKV(input[key], false);
}
的角度提供程序。
此提供程序允许在引导角度应用程序之前执行一些代码。通常,要执行的代码类似于APP_INITIALIZER
。示例here
您可以自己编写代码,也可以使用此库(使用get some config from an endpoint, eg /configuration
):https://github.com/ngx-config/core,更准确地说是APP_INITIALIZER
在下面的示例中,我们使用lib通过http调用加载 / configuration 。这可以在您的 app.module.ts
中找到ConfigHttpLoader
然后,您提供 / configuration 的方式取决于您为应用提供的服务。我在一个项目中所做的是:
export function configFactory(http: Http): ConfigLoader {
return new ConfigHttpLoader(http, '/configuration'); // FILE PATH || API ENDPOINT
}
@NgModule({
imports: [
ConfigModule.forRoot({
provide: ConfigLoader,
useFactory: (configFactory),
deps: [Http]
})
]
})
这样您的前端应用程序始终会加载 / configuration ,但根据环境的不同,符号链接将指向不同的配置文件。
你可以使用这样的东西。