使用node.js表示服务器的Backbone.js pushState路由的帐户?

swa*_*ler 14 javascript node.js express backbone.js pushstate

pushState Backbone.js版本0.5更新引入了支持.

骨干文档:

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

这可能看起来像一个微不足道的问题,但我想知道是否有人可以帮助我使用一些特定的(最好是快速的)node.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
};
Run Code Online (Sandbox Code Playgroud)

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

domain.com
domain.com/about
domain.com/#/about // <- for browsers that don't support pushState
Run Code Online (Sandbox Code Playgroud)

Ati*_*nux 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
});
Run Code Online (Sandbox Code Playgroud)

我建议你使用Derick Bailey的3个与Backbone.js兼容的链接:

  • 使用HTML5 PushState进行SEO和辅助功能,第1部分:PushState简介: http ://lostechies.com/derickbailey/2011/09/26/seo-and-accessibility-with-html5-pushstate-part-1-introducing-pushstate/
  • 使用HTML5 PushState进行SEO和辅助功能,第2部分:使用Backbone.js进行渐进式增强: http ://lostechies.com/derickbailey/2011/09/26/seo-and-accessibility-with-html5-pushstate-part-2-progressive -enhancement-与骨干-JS /
  • 使用HTML5 PushState进行搜索引擎优化和辅助功能,第3部分:视频: http ://lostechies.com/derickbailey/2011/10/06/seo-and-accessibility-with-html5-pushstate-part-3-the-video/