我正在用 Marionette 和 RequireJs 做一个单页 webApp,基本上它是一个嵌套了很多 ItemView 和 CompositeView 的布局视图。我希望通过单击将页面更改为新设计,因此我想询问有关更改视图模板的最佳实践。
比如说,我的观点是这样的,它的模板包含在 requirejs 的文本插件中:
define([
'text!templates/designNo1/template.html'
], function(template) {
var MyView = Backbone.Marionette.ItemView.extend({
/*Template*/
template: template,
initialize: function() {
......
},
onRender: function() {
......
}
});
return SkillView;
});
每个视图及其子视图都是这样定义的。及其位于“template/designNo1”文件夹中的模板。现在我在“template/designNo2”中有一组新设计,我想将它应用到页面上,但我发现没有机会这样做,因为视图已经被 RequireJs 加载并且模板的路径很难-编码。当然,我可以在创建视图的实例时覆盖视图的模板,但如果这样做,我必须在创建实例的上层模块中加载所有新设计,这看起来很糟糕,并且新设计不断出现,很快就会一团糟。
那么,有什么建议吗?