我的实验进行得很顺利——到了一定程度——但我认为现在先回答下列零散的问题或反馈可能会节省我很多的挫折,并让我更快地上升到我想要的学习曲线。我试图包含相关片段作为详细性示例。
1)路由器很棒,但是否适合重任务?
以下路由器可将用户从初始页面加载移动到特定路径(搜索),该路径中的SearchBoxView在最后一个js中实例化,类似于TodoMVC示例中的app.js。然而,尝试像为SummaryResultsView设置视图一样在路由器中设置视图会生成“不是构造函数”的错误。
var Workspace = Backbone.Router.extend({
routes: {
'': 'default',
'search': 'searchBox',
'summary': 'summary',
'detail': 'detail',
},
default: function() {
console.log("Router: Default");
track.Router.navigate("#search", {
trigger: true,
replace: true
});
},
searchBox: function () {
console.log("Router: Search");
},
summary: function () {
console.log("Router: Summary");
new track.SummaryResultsView({ el: $("#summary #results")});
},
我刚找到了一个链接:https://github.com/thomasdavis/backbonetutorials/blob/gh-pages/examples/modular-backbone/js/router.js,这个链接中的路由初始化行为与我的预期相似,所以我会尝试使用这种方法。
2) 你是否需要在渲染时构建大量状态逻辑的主页面视图?
通过上面的路由设置,每个路由将拥有多个视图,根据集合中的结果显示/隐藏或更改其呈现方式。在状态更改时设置要渲染的视图看起来是个好地方。TodoMVC示例中,app.js视图渲染函数执行了很多等效逻辑。
3) 如何在不使用require.js的情况下使用外部文件中的Underscore模板
我相信我最终会开始包含require.js - 但是为了简化学习曲线的一部分,我想先不使用它。此外,模板将从单独的CMS中提取字段标题,而目前还不确定它能否与AMD很好地协作。
4) 它是否可以帮助减少像colorbox和datatables这样的插件依赖?
我正在使用Backbone设计一个中等规模的应用程序,其中有相当多的演示代码显式地与这些jQuery插件配合使用。这并不是坏事,但是似乎用Backbone结构编写类似的功能会更易于维护,或者至少易于理解它正在做什么。请注意,在我的旅行中,我发现了backbone tablesorter(出链接)还不能确定它是否会导致更紧密耦合的代码。
谢谢!