2

我正在构建一个多页面应用程序,并希望利用 Backbone 的路由器来初始化我的页面加载视图。我无法找到一种不使用散列来利用路由器的方法,而且我不需要或不想使用推送状态。

基本上,我想要做的就是使用路由器 URL 模式匹配来匹配 url 并根据从服务器加载的页面初始化我的视图。

也许我在想这一切都是错误的,或者也许有一种方法可以在我缺少的主干路由器中本地执行此操作。非常感谢任何建议。

4

1 回答 1

0

从骨干文档(强调我的):

Backbone.Router 提供路由客户端页面并将它们连接到操作和事件的方法。

换句话说,骨干路由器仅设计用于处理客户端 URL(散列之后的部分),而不是服务器端 URL(散列之前的部分)。可能有一种方法可以破解路由器并Backbone.History使用完整的 URL 而不仅仅是哈希,但这并不容易,我建议不要这样做。

您可以考虑的一种替代方法是某种 onDocumentReady 逻辑,它检查页面的 URL,如果它的哈希与它的 URL 不匹配,则添加一个哈希。这样一来,如果有人访问“/foo”,您的代码会将其转换为“/foo#foo”,并且可以正常使用主干路由器。

不过,另一种选择是编写自己的“路由器”,这实际上比 Backbone 的更简单,因为它只需要在每次页面加载时工作一次。这是一个简单的例子:

var mockRouter = {
    foo: function() {
        // do stuff for page "foo"
    },
    bar: ...
}
$(function() {
    mockRouter[window.location.pathname]();
});
于 2014-09-28T06:06:34.870 回答