14

pushStateBackbone.js 的 0.5 版更新引入了支持。

骨干文档

请注意,使用真实 URL 需要您的 Web 服务器能够正确呈现这些页面,因此还需要进行后端更改。例如,如果您有 /documents/100 的路由,如果浏览器直接访问该 URL,则您的 Web 服务器必须能够提供该页面。对于完整的搜索引擎可抓取性,最好让服务器为页面生成完整的 HTML ......但如果它是一个 Web 应用程序,只需呈现与根 URL 相同的内容,然后用 Backbone 填充其余内容视图和 JavaScript 工作正常。

这似乎是一个微不足道的问题,但我想知道是否有人可以帮助我处理一些特定的(最好是expressnode.js服务器代码。我应该如何处理这些路线?我有点困惑。

这是我的应用程序路由器模块的相关摘录:

var Router = Backbone.Router.extend({
    routes: {
        '': 'index',
        'about': 'about'
    },
    index: function() {
        indexView.render();
    },
    about: function() {
        aboutView.render();
    }
});

var initialize = function() {
    var router = new Router;
    Backbone.history.start({ pushState: true });
}

return {
    initialize: initialize
};

我这里只有一个顶级路由和一个关于页面的路由。那么我应该如何设置一个允许我导航到的节点服务器:

domain.com
domain.com/about
domain.com/#/about // <- for browsers that don't support pushState
4

1 回答 1

18

解释

首先,您需要知道domain.com/#/about它将调用您服务器的“/”路由,因为它不读取# 片段。您的服务器将呈现您的 Backbone.js 应用程序的基础,并且 Backbone 将触发“关于”路由。

所以,你需要在 Express JS 中声明两条路由:

  • /
  • /关于

代码

app.get('/', function(req, res) {
    // Trigger the routes 'domain.com' and 'domain.com/#/about'
    // Here render the base of your application
});

app.get('/about', function (req, res) {
    // Trigger the route 'domain.com/about'
    // Here use templates to generate the right view and render
});

我向您推荐 3 个链接,以便与 Derick Bailey 的 Backbone.js 进行 SEO 兼容性:

于 2012-01-20T07:32:02.743 回答