【问题标题】:Can Backbone and Express routers work together in an Express application?Backbone 和 Express 路由器可以在 Express 应用程序中一起工作吗?
【发布时间】:2012-12-17 09:17:55
【问题描述】:

我已经构建了几个 Backbone 应用程序,并且很欣赏客户端代码结构和组织。我正在使用 Express 进行 Node 开发,但我不确定 Express 和 Backbone 如何在路由处理中协同工作。

【问题讨论】:

  • Backbone.Router 用于客户端路由,即:通过 ajax 更新页面时使用 html5 历史 API 更改 URL。你想做什么?

标签: javascript node.js backbone.js express


【解决方案1】:

您需要了解 Node 和 Backbone 是相互独立的。

  • Node 用于服务器端(例如使用数据库、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/

【讨论】:

  • 您可以在后端使用 Backbone 模型和集合,以及视图和事件,甚至可以使用经过一些调整的路由器
  • 没错。我只是给提问者提供了简单的信息,让他们先理解这个概念。
  • 感谢 Serdar,我忘了解释我使用的是 Express。我对 Backbone 和客户端 JavaScript 有深入的了解。我不确定 Express 路由和 Backbone 路由如何共存。在 Backbone 应用程序中,我会编写它,以便如果访问者导航到 /foo,则 foo 路径将在我的路由器中并执行将生成 Backbone 模型和视图的函数。然而,在 Express 应用程序中,Express 想要处理此路由并运行它自己的函数(req, res)。这些可以一起工作还是我必须选择一个?
  • 您可以同时使用它们。您将继续在客户端使用 Backbone。 Express 与服务器端有关。在 Express 上,您正在定义一旦请求 /foo 或 /bar 到达服务器后服务器应该做什么。
  • 谢谢赫克托。一位朋友向我指出了一些我忘记的事情。 Backbone 使用哈希链接,所以 Backbone 路由是 /#foo,Express 路由是 /foo。第一个将在客户端运行主干路由的相应功能,第二个将在服务器上运行该功能。感谢您的回复!
【解决方案2】:

朋友给了我答案:

Backbone 使用哈希路由。比如http://yoursite.com/#foo

Express 将使用传统的http://yoursite.com/foo

您可以使用彼此独立的路由器,该路由器基于您的路径 - 用于客户端功能的哈希路由和用于服务器端功能的传统路由。

两个路由器可以共存。

【讨论】:

    【解决方案3】:

    您关于 Backbone 和 Express 如何协同工作的问题无法准确回答,因为它们可以协同工作的方式实在数不胜数。希望下面的一些信息可以帮助你做你想做的事。

    首先,您可以在客户端(骨干网)上使用 www.example.com/foo(无 #)路由 - 请参阅 Backbone.history.start() 文档中的 pushState 选项。可以在客户端和服务器端集成路由。但是,要找到确切的方法并不容易。

    这些链接下的一些信息可能会对您有所帮助:

    您写道您有使用 Backbone 的经验,但您最近正在迁移到 Node,所以我假设您对其他框架持开放态度,而不仅仅是 Express。您可以考虑使用例如。 restify(除了 Express)制作一个可以与 Backbone 集成的 RESTful 服务。

    还有像DerbyMeteor 这样的完整框架,它们使用一个代码库覆盖客户端和服务器端,您可以共享的不仅仅是路由器。

    (另外,我刚刚发现今年 (2013) 的 HTML5DevConf 演讲:Surviving Robots and Old Browsers by Server-side Backbone。我还没有看过,但它似乎与您的问题非常相关。)

    【讨论】:

      猜你喜欢
      • 2015-08-13
      • 1970-01-01
      • 1970-01-01
      • 2015-12-07
      • 2021-10-08
      • 2017-06-14
      • 1970-01-01
      • 1970-01-01
      • 2013-11-20
      相关资源
      最近更新 更多