我已经阅读了相当多的介绍性教程阅读(包括绝对初学者、完全学习,以及 2 个 Code School Backbone 课程的大部分内容),我完全可以看到 Backbone 提供的潜力。但是理解的灯泡还没有完全打开......我认为绝大多数简单的待办事项应用程序的例子使它看起来比在处理更复杂的项目时更微不足道。
我的实验已经达到一定程度——但我认为现在获得关于以下一系列零散问题的答案或反馈可能会为我节省很多挫折感,并使我在学习曲线上向我想要的方向前进。我已尝试为具有详细性质的示例包含相关片段。
1)路由器很棒,但是/不是任何繁重的地方吗?
以下路由器用于将用户从初始页面加载移动到特定路由(搜索),该路由在最后一个加载的 js 中实例化其 SearchBoxView,类似于 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 的外部文件中的下划线模板
我很确定我最终会包含 require.js - 但为了简化学习曲线的一部分,我想在没有它的情况下开始。同样 b/c 模板将从单独的 CMS 中提取字段标题,并且(还)不确定它与 AMD 的配合会有多好。
4)它可以帮助减少插件依赖,如颜色框和数据表吗?
我正在使用 Backbone 进行的概念验证项目之一是一个中等大小的应用程序,它有相当多的显式编写的演示代码以与这些 jQuery 插件一起使用。这不是坏话,但似乎在骨干结构中编写类似的功能会更易于维护或至少易于理解它在做什么。请注意,我在旅行中发现了主干表排序器(帖子链接外),并且(还)无法判断它是否会导致或多或少紧密耦合的代码 wrt 插件。
谢谢!