2013-05-02 62 views
6

維護客戶端可用的配置文件(在ASP.NET應用程序中服務器端的AppSettings部分的等效類型)是否有一個被普遍接受的最佳實踐?Angular/RequireJS應用程序配置文件的最佳方法?

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

在此先感謝您的任何見解!

+1

您可以將設置保存在專用配置中。js文件,編輯JSON並不困難然後編輯XML – Guillaume86 2013-05-02 20:13:53

+1

關於Angular,也許這個答案可以激發你更多 http://stackoverflow.com/questions/16339595/angular-js-configuration-for-different-enviroments – kfis 2013-05-03 07:38:32

回答

1

我認爲這個問題的答案非常依賴於你如何在應用程序的整體結構中設置角度層。例如,我已經爲來自基本服務器應用程序(Grails,node.js,RoR)的每個環境提供了一個角度應用程序,並且角度應用程序始終是相同的代碼庫,因爲我要饋送的數據角度由服務器端控制,角度調用都是相對於基本URL。換句話說,我通過提供Angular應用程序的服務器應用程序代理所有數據,所有角度應用程序「知道」的是它自己的url。

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

1

我有這個相同的困境,我現在採取的是: 我有一組配置文件,如config-local.js,config-staging.js等 然後我創建一個符號鏈接到config.js我想要運行我的應用程序的任何地方。 在本地桌面上,我符號鏈接到config-local.js,在staging env中,我符號鏈接到config-staging.js。 然後我把config.js放在.gitignore中。

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

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

3

我不認爲在開發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)。

相關問題