我注意到有一個不同的方式,DOM被Marionette和Backbone更新的方式。我創造了兩個簡單的小提琴。一個使用Backbone,另一個使用基於牽線木偶的。這兩個示例都有一個輔助方法調用processDom,並且該方法在迭代50次後只是拋出一個錯誤。marionette.js vs骨幹更新DOM
然而,在骨幹示例中,元素被添加到DOM直到die()方法觸發。但在基於木偶的例子中,DOM並沒有被更新。如果有人能解釋這是如何工作的,那將是非常好的。我不知道木偶在內部使用了一種虛擬技術。
渲染在提線木偶示例方法
render: function() {
var viewHtml = this.template({
'contentPlacement': 'Sydney'
});
this.$el.html(viewHtml);
this.processDom(this.$el);
this.postRender();
}
渲染在骨幹示例方法
render: function() {
var template = Handlebars.compile($('#sample-template').html());
var viewHtml = template({
'contentPlacement': 'Sydney'
});
this.$el.html(viewHtml);
this.processDom(this.$el);
this.postRender();
},
鏈接撥弄例子
http://jsfiddle.net/samitha/v5L7c2t5/7/
http://jsfiddle.net/samitha/pc2cvmLs/7/
偉大的答案@ vahan-vardanyan。這是否意味着如果我正確使用Marionette,我不需要使用** documentFragment **來克服骨幹應用程序中的一個常見問題,這個問題是繁重的DOM修改?有很多嵌套視圖時,重型DOM修改會成爲問題。這個問題也在[link](http://ozkatz.github。io/avoid-common-backbonejs-pitfalls.html)在部分**渲染集合時導致多個DOM重排** – fernando 2014-11-05 21:38:10
偉大的文章。是!對於收集渲染,Marionette將使用該技術。您可以簽出源代碼並在那裏看到documentFragment。 – 2014-11-06 04:37:49