Angular/RequireJS应用中配置文件的最佳方法

Best Approach for Configuration File for an Angular/RequireJS Application?

本文关键字:最佳 方法 配置文件 RequireJS 应用 Angular      更新时间:2023-09-26

是否有一种普遍接受的最佳实践来维护客户端可用的配置文件(类似于ASP中服务器端的AppSettings部分)?网络应用程序)?

我们的应用基于Angular。我们希望从代码本身外部化环境特定的设置(如远程系统url等),因此理想情况下,运维人员而不是开发人员可以在一个地方修改设置。

提前感谢任何见解!

我不认为在开发AngularJS应用程序时使用config.js文件是个好主意。原因是,您将破坏自动测试的任何可能性。

相反,我创建了一个"设置"服务,在这个服务中我指定了我的应用程序的特定上下文。例如:

angular.module('settings',[]).factory('SettingsService',function(){
   var service={};
   // Insert your settings here
   service.ServerPath = 'whateverwhatever';
   service.ImagePath  = 'bla bla bal';
   return service;
});

然后将SettingsService注入到需要访问这些设置的控制器中。

当然,(为了简单起见,这里省略了),您可以使用空主体创建ServiceService,然后在应用程序的.run()方法中从服务器获取设置。

我使用简单的描述方式,并为每个部署类型("开发"、"测试"、"生产"等)维护一个SettingsService。然后根据目标在构建脚本中包含正确的SettingsService(我使用Grunt,但您也可以使用Ant)。

我认为这个问题的答案很大程度上取决于你如何在应用程序的整体结构中设置你的角层。

举个例子,我用同样的方式为基础服务器应用程序(Grails、node.js、RoR)的每个环境提供了一个angular应用程序,而angular应用程序总是相同的代码库,因为我提供给angular的数据是由服务器端控制的,angular调用都是相对于基础URL的。换句话说,我通过为Angular应用提供服务的服务器端应用代理所有数据,所以Angular应用"知道"的只有它自己的url。

如果你直接调用其他服务,而不是使用基本服务器应用程序来代理数据,那么也许你仍然可以使用服务器来提供url,这取决于应用程序服务器端的一些配置。在这种情况下,您总是可以将这些配置值存储在DB表中,以便可以随时更改它们。

我也有同样的困境,我现在所采取的措施是:我有一组配置文件,如config-local.js, config-staging.js等。然后我创建一个符号链接到config.js任何我想运行我的应用程序。在我的本地桌面上,我符号链接到config-local.js,在登台环境中,我符号链接到config-staging.js。然后把config.js放到。gitignore.

优点:它工作。缺点:在应用程序正常工作之前需要创建符号链接。

未来:也许在grunt中添加一个任务来创建符号链接?