2010-09-01 55 views
0

有沒有人在生產代碼中實施John Resig's micro-templating?特別是我想知道如果嵌入模板<script type="text/html">已造成任何問題。在生產代碼中使用文本/ html javascript模板

多一點信息:這裏的諸如此類的事情,我很擔心:

  • 我的用戶大多是在企業環境中 - 可能一個不尋常的代理服務器撕裂或剝離出模板
  • 嵌入式模板似乎無法通過W3C驗證。舉例來說,如果下一版本的IE決定它不喜歡它們呢?

回答

1

我放棄了通過scripttags內聯模板,因爲我的視圖層會創建多餘的重複腳本模板。相反,我把模板回到JavaScript作爲字符串:

var tpl = ''.concat(
    '<div class="person">', 
     '<span class="name">${name}</span>', 
     '<span class="lastname">${lastName}</span>', 
    '</div>' 
); 

我使用的字符串連接伎倆,所以我可以使模板字符串可讀。像數組連接或簡單疊加連接這樣的技巧是有變化的。在任何情況下,內聯腳本模板都能正常工作並且工作正常,但在php/jsp/asp視圖層中,除非您做了更多工作以避免它,否則您可能會創建多餘的重複腳本模板。

此外,這些模板變得相當複雜,你必須添加更多的邏輯,所以我進一步查找,發現mustache.j是哪個imo。遠遠優於JavaScript範圍內的邏輯(條件和動態變量定義)。

另一種選擇是通過ajax來檢索模板字符串,在這種情況下,您可以將每個模板放在自己的文件中,並簡單地將它賦予一個.tpl擴展名。你唯一需要擔心的是http請求往返,對於小的.tpl文件來說不應該花太長時間,而且是imo。足夠微不足道。

1

雖然我沒有使用@ jeresig的微模板,但我確實使用了我自己的模型,它使用了&lt;script type="text/html"&gt;。我已經在幾個(儘管是基本的)生產站點使用它,沒有任何問題。 HTML5 spec本身指的是類似的東西(接近我鏈接的部分的末尾)。 AFAIK該塊只在MIME類型是可識別的腳本類型時執行,否則該塊只是文檔的一部分。

+0

這很有趣,謝謝。雖然我的網頁無法通過XHTML/HTML4驗證,但它似乎可以驗證爲HTML5。這是有希望的... – minimalis 2010-09-01 10:03:39

0

我實際上,它的效果很好。雖然只適用於webkit驅動的瀏覽器,所以不能爲其他人擔保。但是你期望什麼問題?這個方法很簡單,我想不出它會如何破壞。

0

如果你使用jQuery,我可以推薦jQuery的模板,而不是:

http://github.com/nje/jquery-tmpl

我認爲這應該是introduced officially jQuery的1.5

BTW。我認爲Resigs腳本和jQuery模板都依賴於使用innerHTML,所以只要在你的瀏覽器中工作,你應該沒問題。