无脂路由器阻止Backbone路由器,Backbone router.js如何/何时工作?

时间:2013-07-21 23:51:45

标签: backbone.js routing fat-free-framework

我有一个Backbonejs(BB)项目设置。我有运行服务器端代码的Fat Free Framework(F3)。在我问这个问题时,请记住我只是学习这两个web开发工具:BB路由器何时进行任何路由?我在网页中有一个链接与BB路由器中的路由匹配,但F3路由器一直试图处理它并失败。这两个路由器如何协同工作而不会干扰?

非常感谢你的帮助。

1 个答案:

答案 0 :(得分:0)

如果您没有使用pushState,那么主干路由很容易与服务器路由区分开来:

  • / ROUTE1
  • /路径2
  • / ROUTE1#路线/ A
  • / ROUTE1#路线/ B

哈希之前的部分是传输到服务器的部分(F3路由)。散列后的部分对应于骨干路由。

//F3 routing
$f3->route('GET /route1',…)
$f3->route('GET /route2',…)

//Backbone routing
routes: {
  "route/a": "routeA",
  "route/b": "routeB",
}

请注意,Backbone路由器不会向服务器生成任何HTTP请求(除非您明确定义它)。

自动生成HTTP请求的是Backbone模型。使用urlRoot将骨干模型映射到服务器资源。然后将方法fetch()save()destroy()分别映射到GET,PUT和DELETE HTTP方法。

检查此示例:

userModel = Backbone.Model.extend({
  urlRoot: '/user'
});
var user=new userModel({id:123});
user.fetch();// GET /user/123
user.save();// PUT /user/123
user.destroy();// DELETE /user/123

在服务器端,您可以轻松映射User类,如下所示:

$f3->map('/user/@id','User');
class User {
  function get($f3,$args){…}
  function put($f3,$args){…}
  function delete($f3,$args){…}
}