Architecture Backbone.js架构:路由还是应用程序状态?

Architecture Backbone.js架构:路由还是应用程序状态?,architecture,backbone.js,routes,Architecture,Backbone.js,Routes,我正在构建一个非常复杂的Backbone.js应用程序。来自Rails的背景,我试图弄清楚什么时候触发路由(以及使用true选项的路由函数)合适,什么时候只更改应用程序状态而不影响url 似乎严重依赖路由器将是一个好的方向,因为我可以轻松地将应用程序启动到我想要的任何状态。在这方面有什么最佳实践吗?当我开始使用导航方法时,我注意到我的视图被复制了。这取决于具体情况 通常,当状态实际上为您希望能够添加书签/共享的状态时,您希望使用路由 另一方面,如果您只是更新视图中的某个内容,而实际上它不是您需要

我正在构建一个非常复杂的Backbone.js应用程序。来自Rails的背景,我试图弄清楚什么时候触发路由(以及使用true选项的路由函数)合适,什么时候只更改应用程序状态而不影响url


似乎严重依赖路由器将是一个好的方向,因为我可以轻松地将应用程序启动到我想要的任何状态。在这方面有什么最佳实践吗?当我开始使用导航方法时,我注意到我的视图被复制了。

这取决于具体情况

通常,当状态实际上为您希望能够添加书签/共享的状态时,您希望使用路由


另一方面,如果您只是更新视图中的某个内容,而实际上它不是您需要检索其状态的内容,那么只需更改它即可。但是,您可以提供到该州的路由选项,但不需要它。例如,如果你的应用程序涉及地图-你可能不想在用户每次平移/缩放地图时更新位置/路线,但最好提供“共享”或“书签”类型功能的按钮。

如Jsonwyatt所述。他所说的“这真的取决于形势”是正确的。像状态更改或状态操纵之类的东西通常是我喜欢通过视图进行的。然而,例如,在我实际浏览任何导航URL的情况下,我更希望通过主干路由器呈现
/home/foo
之类的内容

但是,当您实际上只是声明模型状态更改(如更新模型)时。您只需执行
model.save()
,而不必通过类似
/home/student/1
的url,这样会不必要地呈现另一个视图。但这可能会导致您渲染另一个视图,而这本可以仅从当前视图内部完成

作为参考,Darik bailey就应用程序状态和路由器导航以及维护浏览器历史进行了非常好的讨论。作为参考,你可以通过这个链接


德里克的另一篇精彩文章!这正是我一直在解决的问题和进展。我需要一种通过事件和路由相同地更新应用程序状态的方法,这就成功了!谢谢你,杰森!我想我的问题有点含糊。这篇文章()正是我所寻找的,也是我所经历的。