## 2\. JS 應該是靜態的
我看到過很多程序員喜歡動態的使用JavaScript。他們喜歡像使用服務器端語言如C#, Ruby, Java那樣來動態的使用JavaScript。千萬不要這么做。你失去了代碼著色、語法高亮顯示和智能感知的支持。記住,JavaScript 應該屬于一個?`.js`?文件(見規則 #1)。
然而,使用JSON引入動態行為。我把這稱為JavaScript配置對象模式。具體方法如下:把JSON注入到你應用程序的頭部,并根據業務邏輯的需要利用這些數據。你可能會想:“嘿,這違背了規則 #1”。我把 JSON 看作是數據,而不是代碼,所以我破例,為了支持靜態的、單獨的JavaScript文件。
StackOverflow 使用的這種模式,Google 也是。你可以看下他們的代碼:
[](https://box.kancloud.cn/2015-10-06_56138f6656227.png)
正如你看到的,StackOverflow 注入了一些個人的設置,如?isNoticesTabEnabled。這個簡單的JSON代碼片段為你使用靜態JavaScript文件自定義行為提供了必要的數據支持。為了實現這一點,需要序列號服務器端類為JSON,然后放置在?`<head>`?中。然后你可以在靜態的JavaScript文件中根據需要參考這個數據結構,能夠使用它,是因為它被注入到?`<head>`?中。