我已经构建了几个 Backbone 应用程序,并欣赏客户端代码结构和组织。我正在使用 Express 进行 Node 开发,但我不确定 Express 和 Backbone 如何在处理路由时协同工作。
3 回答
您需要了解 Node 和 Backbone 是相互独立的。
- 节点用于服务器端(例如使用数据库、api 服务等)。
- Backbone是一个客户端 Javascript MVC 框架,它为您提供组织客户端 Javascript 应用程序的结构。(浏览器中的应用程序)
您可以在客户端拥有一个 Backbone 应用程序,它可以连接到任何后端,无论是 Node、Rails、PHP 等......
有关更多信息,请查看客户端的 MVVM 模式和 Javascript 框架。
http://backbonetutorials.com/why-would-you-use-backbone/
http://addyosmani.com/blog/understanding-mvvm-a-guide-for-javascript-developers/
一位朋友给了我答案:
骨干网使用哈希路由。例如http://yoursite.com/#foo
Express 将使用传统的http://yoursite.com/foo
您可以使用彼此独立的路由器,该路由器基于您的路径 - 用于客户端功能的哈希路由和用于服务器端功能的传统路由。
两个路由器可以共存。
您关于 Backbone 和 Express 如何协同工作的问题无法真正准确地回答,因为它们可以协同工作的方式实在数不胜数。希望下面的一些信息可以帮助你做你想做的事。
首先,您可以在客户端 (Backbone) 上使用 www.example.com/foo (no #) 路由 - 请参阅Backbone.history.start()文档pushState
中的选项。可以在客户端和服务器端集成路由。但是,要找到确切的方法并不容易。
这些链接下的一些信息可能会对您有所帮助:
- https://github.com/developmentseed/bones
- https://github.com/SC5/backbone-serverside
- https://github.com/tysoncadenhead/backbone-on-express
- http://nerds.airbnb.com/weve-launched-our-first-nodejs-app-to-product
- http://blog.andyet.com/2011/feb/15/re-using-backbonejs-models-on-the-server-with-node/
您写道您有使用 Backbone 的经验,但您最近正在迁移到 Node,所以我假设您对其他框架开放,而不仅仅是 Express。您可以考虑使用例如。restify(除了 Express)来创建一个可以与 Backbone 集成的 RESTful 服务。
还有像Derby或Meteor这样的完整框架,它们使用一个代码库同时覆盖客户端和服务器端,您可以共享的不仅仅是路由器。
(另外,我刚刚发现今年的(2013 年)HTML5DevConf 演讲:Surviving Robots and Old Browsers by Server-side Backbone。我还没有看过,但它似乎与您的问题非常相关。)