如何在AngularJS上存储字符串的集中式解决方案?我问了一个类似的question regarding NodeJS,但我不知道如何使用与我以前使用Node相同的Angular方法。
我想到了两种方法:
1 - 设置角度常数
app.constant('config',
{
serverUrl: 'http://localhost:8080'
});
这是我的实际解决方案,但每次我将代码发送到云时,我都需要使用服务器地址更新代码。
2 - 使用类似Node's process.env
的内容我不知道怎么做。
3 - 使用诸如require之类的内容('./ config.js')
我在想类似Node的方法。不知道怎么做。
嗯,有没有一种有效的方法来实现这一目标?
答案 0 :(得分:2)
我认为没有一个正确的答案。我更喜欢你的第一种方法:
app.constant('config',
{
serverUrl: 'http://localhost:8080'
});
这是因为我认为node.js后端和角度前端是separete应用程序。例如,我可以添加到node.js第二版api并将其他角度应用程序(或其他技术中的事件)连接到新的api,但也使用旧的角度应用程序与之前的api版本。 总之,我认为它更灵活
编辑:
所以,每次上传我的Git
时,我都需要更新这一行
我没有将配置文件添加到存储库。我创建了我们添加到存储库的示例配置文件。但实际的配置被忽略了。
EDIT2:
在我的一个项目中,我们使用此模块https://www.npmjs.com/package/gulp-ng-constant来构建来自config.json的app.constant
答案 1 :(得分:1)
这就是我们如何切换服务器URL而不是每次都重写它
var hostname = window.location.hostname;
if (hostname.indexOf("our.live.url") > -1) {
usedEnvironment = availableEnvironments.LIVE;
} else if (hostname.indexOf("localhost") > -1) {
usedEnvironment = availableEnvironments.LOCAL;
} else {
usedEnvironment = availableEnvironments.TEST;
}
switch (usedEnvironment) {
case availableEnvironments.LIVE:
angular.module('app')
.value('apiHost', 'https://our.live.backend.com');
angular.module('app')
.value('IntercomConfig', {
Enabled: true,
AppId: ''
});
break;
case availableEnvironments.TEST:
angular.module('app')
.value('apiHost', 'our.test.backend');
angular.module('app')
.value('IntercomConfig', {
Enabled: false,
});
break;
default:
angular.module('app')
.value('apiHost', 'http://localhost:8080');
angular.module('app')
.value('IntercomConfig', {
Enabled: false,
});
}