一位前端开发人员向我提出了这个询问,我不确定如何表达我的立场,但他让我思考:
因此,Backbone(或 Backbone.Marionette)中的约定是渲染与模板关联的视图,然后将结果视图的构造/合成 HTML 转储或附加到现有容器中,如下所示:
this.$el.append(this.subview.render().$el);
但是,这当然需要页面上已经渲染的 DOM 元素来转储这个新渲染的视图。这会导致如下现象:
<ul id="scheduler-loadroutegroups" class="full-height"></ul>
或者
collectionView.$("#scheduler-loadroutegroups").append(itemView.el);
也就是说,最终期望 content 的空容器。
显然,这种渲染和附加模式是 Backbone 的核心概念,并且有容器来放置内容似乎是绝对必要的。
我的同事的问题是,是否可以使用更多的服务器端 MVC 模板模式,在这种模式中您不需要任何空容器:
<ul id="scheduler-loadroutegroups" class="full-height">
{{#developers}}
<ul>
{{#pets}}
<li>{{name}}</li>
{{/pets}}
</ul>
{{/developers}}
</ul>
在这种情况下,假设开发人员代表一组模型,而宠物代表一组模型。他们每个人都需要自己的视图/子视图,并附有事件。
我假设更经典的服务器端 MVC 模板系统的问题是视图及其相关模板将丢失对 Backbone 所依赖的上下文限制和事件绑定的细粒度控制。
我见过的所有 Backbone 示例/文档都使用这种“空容器/附加”模式。是否有可能以其他方式做事?为什么或者为什么不?