2017-06-20 67 views
0

我有一個角度4應用程序,我試圖找到一個最佳做法的方法來創建一個解決方案,以創建一個服務或某種解決方案,以處理在開發以及生產環境中的HTTP請求的許多網址。對於在多個環境中使用的angular4應用程序中的URL編碼,最佳做法是什麼?

我在這一點上的解決方案看起來像這樣。

import { Injectable } from '@angular/core'; 
/** 
* PathsService is like a properties file for all of the URL paths used in the application. 
*/ 
@Injectable() 
export class PathsService { 

    constructor() {} 

    productionEnvironment:string = "https://myproductionenvironment.com" 
    developmentEnvironment:string = "https://mydevelopmentenvironment.com" 

    activeRoot:string = productionEnvironment; 


    loginResource = "/loginresources" 
    employeeResource = "/employeeresouces" 

    public getLoginResources(): string { 
    return this.activeRoot+this.loginResource; 
    } 

    public getEmployeeResource():string { 
    return this.activeRoot+this.employeeResource; 
    } 




} 

雖然我相信這會工作得很好,有一個小問題,因爲我已經從開發轉向生產環境時改變activeRoot。我想知道是否有更好的方法來做到這一點,所以我不必手動切換。我可以使用javascript來獲取url,解析它,並以這種方式在生產環境和開發環境之間切換,但似乎應該有更好的方法來解決這個問題。對此問題的任何意見將不勝感激。謝謝!

+0

你可以看看@這個鏈接http://tattoocoder.com/angular-cli-using-the-environment-option/ –

回答

5

如果您使用的角度CLI,你有一個名爲environments文件夾。在這裏,你有environment.tsenvironment.prod.ts

在這兩個文件中都有導出的對象。在這個對象中,你可以添加一個let apiUrl = 'your URL;。然後,在你的文件,你進口只有第一個environment.ts

然後,當你建立,你只需要運行ng build --prod和編譯,而不是使用environment.ts時,它會使用environment.prod.ts

這足夠清楚了嗎?

+1

是啊!作爲補充,您可以創建您想要的任何環境文件(環境開發,臨時存儲等),以及使用您的集成連續工具(或不需要)與想要的環境文件構建。 –

+0

確切地說,在構建時,只需使用'ng build --environment = anyEnv' – trichetriche

1

如果您使用的是Angular CLI,則應該有兩個文件,src/environments/environment.tssrc/environments/environment.prod.ts。在這些文件中,您可以爲生產和開發目的分配環境變量。只需import { environment } from '../environments/environment',你會一切設置。 CLI將自動爲您選擇合適的環境。

相關問題