簡體   English   中英

Angular / RequireJS應用程序的配置文件的最佳方法?

[英]Best Approach for Configuration File for an Angular/RequireJS Application?

是否有一個普遍接受的最佳實踐來維護客戶端可用的配置文件(類似於ASP.NET應用程序中服務器端的AppSettings部分)?

我們的應用程序基於Angular。 我們希望從代碼本身外部化特定於環境的設置(如遠程系統URL等),因此理想情況下,Ops人員而不是開發人員可以在一個地方修改設置。

提前感謝任何見解!

我不認為在開發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)以相同的方式為每個環境提供角度應用程序,並且角度應用程序始終是相同的代碼庫,因為我提供給角度的數據是受控制的由服務器端和角度調用都是相對於基本URL。 換句話說,我通過提供Angular應用程序的服務器應用程序代理所有數據,因此所有角度應用程序“知道”都是它自己的URL。

如果您直接調用其他服務而不使用基本服務器應用程序來代理數據,那么根據應用程序服務器端的某些配置,您仍然可以使用服務器來提供URL。 在這種情況下,您始終可以將這些配置值存儲在數據庫表中,以便可以即時更改它們。

我有同樣的困境,我現在所采用的是:我有一組配置文件,如config-local.js,config-staging.js等。然后我在任何地方創建一個符號鏈接到config.js我想運行我的應用程序。 在我的本地桌面上,我在config-local.js中進行了符號鏈接,在staging環境中,我將符號連接到config-staging.js。 然后我把config.js放在.gitignore中。

優點:它的工作原理。 缺點:在應用程序正常工作之前需要創建符號鏈接。

未來:也許在grunt中添加一個任務來創建符號鏈接?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM