Backbone.js 主干项目还是路线?
由于主干网提供了两种应对特定事件的方式,我想知道普遍的共识是什么。这是一种非常常见的情况-我在页面上有一个链接,我可以在页面上设置href来路由它,这样路由器就可以调用一个函数来处理它,如下所示: HTMLBackbone.js 主干项目还是路线?,backbone.js,Backbone.js,由于主干网提供了两种应对特定事件的方式,我想知道普遍的共识是什么。这是一种非常常见的情况-我在页面上有一个链接,我可以在页面上设置href来路由它,这样路由器就可以调用一个函数来处理它,如下所示: HTML JS var AppRouter = Backbone.Router.extend({ routes: { "posts/:id": "getPost" } }); var AppRouter=Backbone.Rout
JS
var AppRouter = Backbone.Router.extend({
routes: {
"posts/:id": "getPost"
}
});
var AppRouter=Backbone.Router.extend({
路线:{
“posts/:id”:“getPost”
}
});
或者我可以在视图中对事件做出如下响应:
var MyView = Backbone.View.extend({
...
events: {
"click .handleInView": "open",
},
...
open: function() {
...
}
});
var MyView=Backbone.View.extend({
...
活动:{
“click.handleInView”:“打开”,
},
...
打开:函数(){
...
}
});
我知道路由为您提供了历史记录和直接链接的额外好处,但是从性能和代码布局的角度来看,如果我不关心历史记录,那么什么是更好的方法呢
我的路线可以是一个单一的地方,在那里我可以看到所有的交互,但也可能会很快变得杂乱无章。如果你不关心历史或书签,事件的副作用会更少(人们不会尝试将它们添加书签,也不会干扰你的历史),而且它们的实现和处理更简单/更快
就性能而言,它们也稍微快一点(但实际上这两种方法都不够慢,根本不重要)。我同意这些评论。任何需要深度链接、书签等的内容都应该使用路由进行处理。但是,如果您有一个选项卡视图,或者另一个从URL不可访问的视图,并且嵌套在另一个视图中,那么在视图代码内部处理它可能更有意义。至于混乱,您可能需要考虑将路由重新组织为单独的文件。这里有一些例子
通常,当您调用应用程序状态的重大更改时,或者您希望维护浏览历史记录(通过backbone.history)时,会使用路由,以便用户可以通过浏览器按钮在状态之间来回导航 理想情况下,您可以在不同的情况下使用这两种方法 我喜欢根据我的页面上正在发生的变化来思考它。如果常规页面状态相同,但某些元素正在更改或更新,我将使用事件。如果常规页面状态正在更改,或者如果我正在加载不同的UI屏幕,我将使用路由 var MyView = Backbone.View.extend({ ... events: { "click .handleInView": "open", }, ... open: function() { ... } });