2013-11-27 114 views
2

推碼說我要動態地呈現一些HTML。哪個更好?(除了它提供了良好的結構代碼)HTML模板VS通過JS

<script type="text/template" id="some"> 
//some html code here 
</script> 
_.template($("#someid").html()); 

$("#someid").html("inserting html here"); 
+1

我的模板的忠實球迷。它讓我有機會真正編輯我希望我的HTML所在的html。 – CaptainCarl

+0

但瀏覽器在html內容中保存模板。如果我可以通過js推送它,它可以只是一個字符串/字符串數組。我在想這是昂貴的! – Vani

+0

您的示例並不等同。第一種是允許替換新值的模板是運行時,第二種是簡單的不透明字符串。我懷疑性能差異是值得擔心的,特別是如果你明智並緩存'_.template'返回的函數,以便只構建它們一次。 –

回答

1

在這兩個,你所提到的方法,HTML標記生成爲HTML字符串,然後加入到目標DOM元素。所以,我看到它的使用方式沒有性能優勢。

  • 說了這麼多,你的情況使用模板(下劃線),代碼 只是變得比其通過串聯值加在一起,以產生長期的HTML 字符串更易於管理。

  • 此外,利用條件語句編譯的模板可以存儲在一個變量中並且通過使單個呼叫到模板(和傳遞對象的話)重複使用。然而,如果你需要填充HTML字符串,然後在你最終寫for環或它的功能相當於編程內的字符串連接語句的情況下$.each_.each,以使其可重複使用。

這裏有2個小提琴,基本上做到用2層表示的方法同樣的事情:

Using Templates

Using string concatenation

比較的代碼並自行決定什麼最適合您的要求。

0

我會使用隱藏的div而不是script標籤中的html代碼,以便Google可以爲其編制索引。

此外,我會用.clone()方法來克隆DOM結構,而不是檢索純文本html(.html())並基於此創建新的元素。但改變模板中的值會有點棘手 - 仍然可能更快;沒有測試過。