2013-02-08 186 views
10

我正在將Backbone和Backbone.Marionette集成到現有的Web應用程序項目中。我們計劃現在只保留項目中的所有現有功能,但是我們將利用Backbone架構和Marionette校長的任何新功能。首要業務之一是決定HTML模板渲染庫以及這些模板的數據綁定解決方案。以前,我們一直在使用JsRenderJsViews來滿足我們所有的模板需求和數據綁定,但我們願意探索新功能的新途徑。所以基本上我一直在研究各種解決方案,現在需要一些關於選擇什麼的建議或想法。以下是我已經看過了迄今:骨幹:模型到模板和模板到模型綁定

Backbone.StickIt

優點:似乎遵循的關注點分離骨幹的想法,這有助於保持你的模板非常「乾淨」。

缺點:看起來你必須在你的視圖中多寫一些代碼來定義綁定。此外,似乎缺乏執行條件呈現的功能,因此您必須始終呈現完整模板並切換某些元素的顯示。

Rivets.js

優點:處理更多的數據綁定模板中的選項沒有使它太亂。

缺點:另外,似乎缺乏條件渲染。

Knockback/Knockout

優點:處理各種數據,通過屬性綁定需要的。

缺點:易於開始使用轉換器「模糊」模板。必須添加另一步從Backbone模型創建Knockout視圖模型。

JsViews

優點:類似淘汰賽的能力,但不同的語法。處理條件呈現。

缺點:在過去,我們通過在模板中添加太多業務邏輯來弄髒我們的模板,但這可能是我們開發中可以糾正的一個問題。需要創建功能以將JsViews的可觀察性功能與Backbone模型事件聯繫起來。其他類似StickIt和Knockback的庫會自動處理這個問題。

我們還調查了Backbone.ModelBinder這是介於兩者之間StickIt和鉚釘。

任何人都可以分享他們做出的任何決定,他們爲什麼選擇一個插件/庫而不是另一個?我也接受其他建議。謝謝。

回答

2

我用過這些

小鬍子。js

Pro's:鬍子不僅支持變量綁定,還可以處理函數綁定。例如,您可以有

<a href="{{test}}" >click me </a> 

然後在您的視圖中有一個名爲test的方法。這節省了大量的冗餘分配類/ id鏈接,並綁定View類中的事件。

Con's:我不喜歡它的語法。

接下來我在Ruby on Rails中使用coffeescript,它在jst eco模板系統中構建。親是,你有在單獨的文件模板。在頁面加載時,它們會綁定到dom中的全局變量。這些都被縮小了,並且更好一些僞腳本模板標籤。另一位職業人士是,如果你還寫作,如果你用紅寶石做的話。缺點是,他們使用剃鬚刀標籤,並且不允許與服務器端代碼輕鬆混合(如翻譯)。

其他庫當然是強調模板引擎。非常簡單,但非常強大。前景,你已經有了它(骨幹需要下劃線)。缺點是,你不能(默認情況下)從外部文件加載模板。我已經通過使用服務器端代碼解決了這個問題(require_once,渲染部分)。但是,如果使用require.js和文本插件(http://requirejs.org/docs/download.html#text),則可以將模板作爲依賴項加載。

+1

我簽出了下劃線(有趣的是,我沒有考慮它包括像你提到的)。我覺得我們可能會遇到與「意大利麪條」模板相同的問題。主要關注的是我們有許多開發人員在開發模板,我們開始將太多的邏輯和模板語法交織在HTML中。所以爲了迫使我們放棄這種習慣,我們選擇了Backbone.Stickit。看起來需要一段時間才能習慣在模板之外創建綁定,但希望我們可以從HTML的「清潔」中受益。感謝您的輸入。 – 2013-02-11 17:26:15