2012-07-06 71 views
1

我有一個主要基於JavaScript的網站。它使用REST服務。我在JavaScript頁面中硬編碼了REST服務URL。該URL將從PROD更改爲測試。每次我將這個站點部署到不同的環境時,我需要去更新.JS文件。管理這些的最佳方法是什麼?有沒有更好的方法來做到這一點?控制JavaScript中的設置

回答

2

您可以通過location.href獲取JS加載的當前頁面的URL。使用這個和一些字符串操作,你可以動態地創建這些RESTful URL。

1

我通常會將這些地址和其他部署敏感值分隔到由服務器在運行時生成的單獨的腳本塊中。

例子:(ASP.NET MVC在這裏,但可以是任何語言/框架)

<script type="text/javascript"> 
    var pageOptions = 
    { 
     "detailsDataUrl": '@Url.Action("LoadDetail", "Contact")', 
     "applicationBase": '@Url.Content("~")' 
    }; 
</script> 

你可以交替與眼前這個類型的數據,你的部署過程的一部分,是一個文件的多個版本部署環境的版本。

更新:K. Scott Allen對從服務器代碼傳遞數據到JavaScript代碼的不同選項做了一個很好的發帖,這只是一個例子。你可以閱讀它here。他特別提到了一個名爲NGON的圖書館,該圖書館正式確定了上述模式,並增加了一些便利的花裏胡哨的功能。我已將它添加到幾個項目中,並發現它非常有用。

1

每個人都有一點不同,但通常這是使用構建系統完成的。在構建期間,在構建的服務器上有一個環境變量,其值爲「prod」或「qa」或「dev」。當構建Web應用程序組件時,一個步驟就是使用適合環境的值替換放入文件中的令牌。

請注意,如果您爲寧靜的端點使用相對路徑,則不需要執行此操作。如果您需要更改主機/協議/端口信息,則只需要執行此操作。這很糟糕。可能更好地瞭解您正在測試哪個環境並使用/ etc/hosts將標準URL映射到特定環境的URL。例如,如果你的應用程序使用

www.myapp.com

你能設置,即其URL映射到qa.myapp.com:80的環境。您可以使用腳本來管理更改主機文件以適應您想要的任何環境。