2012-08-16 76 views
2

在我們的項目中,我們獲得了Node.js託管的客戶端JavaScript。如何將Node.js環境變量注入客戶端JavaScript?

此腳本使用服務器中的另一個靜態內容(如http://host:port/static/content)。我們不能使用本地路徑,因爲這個JavaScript可以注入不同的站點。

我們的開發,測試和生產環境具有不同的主機和端口設置。 所以我們必須爲不同環境手動硬編碼這些屬性。

解決此問題的最簡單方法是手動將JavaScript解析爲服務器端的字符串,同時爲靜態文件準備響應。

我認爲這不是一個好主意。

Node.js中是否有這種情況下的內置機制?

P.S.對不起我的英語不好。

+0

爲什麼不只是使用PHP,以便客戶端頁面加載正確的設置? – 2012-08-16 23:11:46

+0

我們在Node.js上獲得了一些後端功能,我們不希望在一個項目中使用2個不同的服務器。 – 2012-08-16 23:53:24

回答

0

我在這裏假設客戶端代碼是從一些動態生成的HTML中調用的。

如果「配置」數據量相當小,您可以通過生成的HTML中的data-*屬性將其傳遞,例如, <body data-static="http://host:port/static/content">或者如果它更大,則在內嵌<script id="config" type="application/json">元素中。

這裏的關鍵是要避免動態生成代碼其唯一目的是代表數據(40年前Kernighan和Plauger,在編程風格的寫的元素,他們想知道到底有多少多少的典型計算機中心的日常活動等同於通過編譯器輸入參數)。使用解釋型語言,代碼/數據區分變得很容易,但值得在腦海中將它們分開。

P.S.你的英語比我見過的大多數問題都好。

+0

謝謝你的回答,但是這個腳本可以注入不同的第三方網站,我們不能管理/更改它們的html代碼。在大多數情況下,我們在客戶端只有一行代碼: 2012-08-17 09:52:25

+0

您能夠將'data- *'屬性粘貼到單個腳本並且如果該屬性不在那裏,客戶端代碼默認爲生產服務器的設置? – ebohlman 2012-08-17 18:06:49

+0

我有你的想法,我想我們可以使用你的變體的一些修改。謝謝。 – 2012-08-17 18:47:46

相關問題