2015-11-07 110 views
1

我該如何做一些集中的解決方案來在AngularJS上存儲字符串?我已經問過類似question regarding NodeJS,但我不知道如何使用Angular的相同方法,因爲我已經習慣了Node。如何設置Angular config var來設置服務器地址?

我想過的方法2:

1 - 設置一個角恆

app.constant('config', 
    { 
    serverUrl: 'http://localhost:8080' 
    }); 

這是我的實際的解決方案,但它與我需要更新我的代碼的缺點每次將代碼發送到雲時都會附帶服務器地址。

2 - 使用類似Node's process.env

而且我不知道怎麼樣。

3 - 使用類似的要求(」 ./ config.js')

我想對像的做法節點。不知道如何。

那麼,有沒有一個很好的,有效的方法來完成這個?

+0

我們使用第一種方法,那麼我們在我們的應用程序中包含了我們需要它們的常量 – MayK

+0

因此,每次我上傳我的來到Git時,我需要更新這一行。 :/ – Rodmentou

回答

2

我不認爲有一個正確的答案。我更喜歡你的第一種方法:

app.constant('config', 
    { 
    serverUrl: 'http://localhost:8080' 
    }); 

這是因爲我認爲node.js backend和angularfrontend as separete應用程序。例如,我可以將node.js的第二個版本添加到api中,並將其他角度應用程序(或另一種技術中的事件)連接到新的api,但也可以在舊版api中使用舊的角度應用程序。 總之在我看來,這是更靈活

編輯:

所以,我需要更新這一行,每次我上載我來的Git

我不加配置文件到存儲庫。我創建了我們添加到存儲庫的示例配置文件。但實際配置被忽略。

EDIT2:

在礦山項目之一,我們使用這個模塊https://www.npmjs.com/package/gulp-ng-constant爲構建app.constant從config.json

+1

這很好,我正在看。 – Rodmentou

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, 
     }); 
    } 
對其進行改寫
+0

你有好方法。 – Rodmentou