【发布时间】:2016-01-18 08:39:19
【问题描述】:
我正准备第一次使用 Backbone 构建一个中型网站。有 7 个菜单项,就性能而言,我无法弄清楚最佳路由/视图关系是什么。触发路由时,我是在每次触发时创建一个“活动”视图的新实例,还是在用户加载页面时为每个视图创建一个视图实例?
... 处理视图的最佳方式是什么——添加和删除 dom 元素和事件,而不会遇到性能问题。例如
$('selector').html(my-new-view);
【问题讨论】:
我正准备第一次使用 Backbone 构建一个中型网站。有 7 个菜单项,就性能而言,我无法弄清楚最佳路由/视图关系是什么。触发路由时,我是在每次触发时创建一个“活动”视图的新实例,还是在用户加载页面时为每个视图创建一个视图实例?
... 处理视图的最佳方式是什么——添加和删除 dom 元素和事件,而不会遇到性能问题。例如
$('selector').html(my-new-view);
【问题讨论】:
如果菜单不变,您只能创建一次菜单。你可以像这样创建一些 html 模板。
<div>
<nav>render-here-only-one</nav>
<section>render-here-when-page-changes/loads</section>
</div>
我更喜欢主干的渲染方法初始化并附加自身。
var testView = Backbone.View.extend({
el: $("#section"),
template:_.template("<strong>hello.</strong>")
initialize: function () {
// any change on view will trigger render
_.bindAll(this, "render");
},
render: function (item) {
this.el.html(this.template());
}
});
var myView = new testView();
myView.render();
【讨论】: