Angular/RequireJS应用中配置文件的最佳方法
Best Approach for Configuration File for an Angular/RequireJS Application?
是否有一种普遍接受的最佳实践来维护客户端可用的配置文件(类似于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中添加一个任务来创建符号链接?
- 有条件更新d3.js力图中节点的最佳方法
- 将jQuery.ech()方法转换为本地JavaScript抽象的最佳方法是什么
- 处理浮点错误的最佳方法是什么
- 从数组中删除元素的最佳方法是:javascript/jquery
- 以编程方式填充组合框道场 (1.8) 的最佳方法是什么?
- 列出没有 mysql 的元素的最佳方法是什么
- 在jquery库中重新定义方法的最佳方法
- Javascript,用vars创建对象的最佳方法
- 使用 jQuery 从 HTML 中获取某些值的最佳方法
- 在变量中保存值的最佳方法是在应用程序关闭后使用,然后使用apachecordova在android中重新启动
- 在d3.json中使用d3.csv组合多个csv文件数据输入的最佳方法是什么
- 用jasmine测试JavaScriptUI的最佳方法
- 使用javascript:在没有阻止html标记(<b>、<p>等)的情况下,阻止脚本的最佳方法
- 如果我返回表,检查 Ajax 调用是否为 200 OK的最佳方法是什么
- JavaScript - 创建可链接函数时的最佳方法是什么
- 在上下文菜单项单击上显示侧边栏/弹出窗口的最佳方法是什么
- 在 JavaScript 中获取范围的随机数的最佳方法
- 在对象类上实现 jquery 作用域的最佳方法
- 将同步函数包装到承诺中的最佳方法是什么?
- 使用 MVC 删除 JavaScript 中硬编码字符串 Asp.Net 最佳方法