我有一个 Backbonejs (BB) 项目设置。我为服务器端代码运行了 Fat Free Framework (F3)。当我问这个问题时,请记住我只是在学习这两个 Web 开发工具:BB 路由器什么时候做任何路由?我在网页中有一个与 BB 路由器中的路由匹配的链接,但 F3 路由器一直在尝试处理它并失败。这两个路由器如何协同工作且互不干扰?
非常感谢你的帮助。
我有一个 Backbonejs (BB) 项目设置。我为服务器端代码运行了 Fat Free Framework (F3)。当我问这个问题时,请记住我只是在学习这两个 Web 开发工具:BB 路由器什么时候做任何路由?我在网页中有一个与 BB 路由器中的路由匹配的链接,但 F3 路由器一直在尝试处理它并失败。这两个路由器如何协同工作且互不干扰?
非常感谢你的帮助。
如果您不使用 pushState,那么骨干路由很容易与服务器路由区分开来:
散列之前的部分是传输到服务器的部分(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){…}
}