2012-03-14 114 views
5

出於某種原因,開發jQuery模板插件(jquery-tmpl)已被擱置。從主題閱讀博客博客文章似乎要麼將在未來再次列入或東西用不同的方法(如jsRender & jsViews)jQuery jquery-tmpl路線圖

更換什麼是jQuery中實現模板的面向未來的方式? (使用測試版的東西是可以的)

回答

5

長期戰略是用JsRender和JsViews替換模板插件。這兩個項目都接近測試版。我的建議是現在使用jquery-templates,然後在發佈時切換到JsRender。模板語法是相似的,所以在時間到來時切換不應該很困難。有人可能會自動更新模板創建一個工具...

退房:

https://github.com/BorisMoore/jsviews https://github.com/BorisMoore/jsrender

http://www.borismoore.com/2012/03/approaching-beta-whats-changing-in_06.html

1

令人沮喪的是,這個問題現在已經一年多了,情況並沒有真正改變。 JsViewsJsRenderjQuery-tmpl功能強大得多,但它們也不再依賴於jQuery和更大的庫本身。

這個項目的時間表似乎是一個爛攤子:jQuery的TMPL是測試和第三方,Microsoft contributed itofficial jQuery project的一部分,那麼jQuery的dropped it,因爲他們認爲這些官方插件是diluting what jQuery was about。當時完整的模板支持將在1.5,但事實並非如此。有一個jQueryUI project page,但它看起來很死,而且在隨後的jQuery版本中沒有關於模板的內容。

基本上,無論您想要使用的模板庫,它與現在任何官方的jQuery或Microsoft發佈無關。

說實話,我認爲JsViews已經成爲一個完整的MVVM框架,而不僅僅是一個模板插件。它看起來相當不錯,但它不是一個簡單或輕量級的jQuery插件或jQuery-tmpl的更新。

如果你想「面向未來」模板開發有似乎是使用新興的兩大模式:

  1. 使用data-*屬性。示例包括Knockout(使用包含表達式的data-bind屬性)和jQuery loadTemplate。實現相當簡單,但僅限於可以表示爲標籤屬性的數據綁定。

  2. 使用'mustaches' - {括號。例子包括JsRender,jQuery-tmpl和Mustache。這些功能更強大,因爲您可以將數據綁定到模板中的任何文本。這些不一致 - JsRender使用{{:,jQuery-tmpl使用${,Mustache使用{{等等,但它們對於循環,ifs等也有不同的語法。

在未來,我認爲其中之一可能成爲標準,但在此期間你不能因爲現在沒有一個穩定的做法真的面向未來。

最後也有個underscore.js選項:其默認是使用相同的語法。NET(即<%=),但使用的.Net,這基本上使該默認爲不兼容時爲開發人員,IDE和編譯器混淆.Net開發人員。您可以通過提供替代正則表達式來更改它以使用任何您想要的語法。這可能是最「面向未來」(不改變你的語法,改變你的模板解析器),而且還限制了你,你可以使用什麼樣的優化,使豐富的工具支持困難。

我想用這種決定這取決於上下文。如果您只想在現有項目中使用一些模板,我認爲最好的選擇是使用jQuery-tmpl,但計劃使用新的jQuery版本來維護它。如果您想從頭開始構建一個使用Javascript MVVM的新應用程序,那麼我會評估更完整的框架,但計劃堅持您選擇的任何內容。