3

由于主干提供了两种响应某些事件的方式,我想知道普遍的共识是什么。这是一种非常常见的情况——我在页面上有一个链接,我可以在页面上设置 href 来路由它,这样路由器就可以调用一个函数来处理它,如下所示:

HTML

 <a href='#posts/2' class='handleInView'>Item 2</a>

JS

var AppRouter = Backbone.Router.extend({
        路线:{
            “帖子/:id”:“getPost”
        }
    });

或者我可以像这样响应视图中的事件:

var MyView = Backbone.View.extend({
  ...
  事件:{
    "点击 .handleInView": "打开",
  },

  ...

  打开:函数(){
      ...
  }

});

我知道路由为您提供了历史和直接链接的额外好处,但是从性能的角度和代码布局的角度来看,如果我不关心历史,那么什么是更好的方法。

我的路线可能是一个我可以看到所有交互的地方,但它也可能很快变得混乱。

4

3 回答 3

1

如果您不关心历史记录或书签,事件的副作用更少(人们不会尝试为它们添加书签,也不会干扰您的历史记录)并且它们更简单/更快地实现和处理。

在性能方面,它们也稍微快一些(但实际上这两种方法都慢到根本不重要)。

于 2012-12-31T20:19:15.613 回答
0

通常,当您调用应用程序状态的急剧变化时使用路由,或者您希望维护浏览历史记录(通过backbone.history),以便用户可以通过浏览器按钮在状态之间来回导航。

理想情况下,您会在不同的情况下同时使用两者。

我喜欢根据我的页面上发生的变化来考虑它。如果一般页面状态相同,但某些元素正在更改或更新,我将使用事件。如果一般页面状态发生变化或者我正在加载不同的 UI 屏幕,我将使用路由。

于 2013-05-17T13:27:20.030 回答
0

我同意评论。任何需要深度链接、书签等的东西都应该使用路由来处理。但是,如果您有 TabView 之类的东西,或者应该无法从 URL 访问的另一个视图,并且嵌套在另一个视图中,那么在视图代码内部处理它可能更有意义。至于混乱,您可能需要考虑将您的路线重新组织到单独的文件中。这里有些例子

骨干通用路由器与单独的路由文件?

BackboneJs 中的多个路由器与单个路由器

于 2013-05-17T13:12:32.530 回答