Учетная запись для backbone.js маршрутов pushState с node.js express server?

pushState была добавлена ​​поддержка с обновлением версии Backbone.js версии 0.5.

Из справочной документации:

Обратите внимание, что использование реальных URL-адресов требует, чтобы ваш веб-сервер мог правильно отрисуйте эти страницы, поэтому необходимы фоновые изменения, как Что ж. Например, если у вас есть маршрут/документы/100, ваш веб-сайт сервер должен иметь возможность обслуживать эту страницу, если браузер посещает этот URL-адрес непосредственно. Для полной полномасштабной поисковой работы лучше всего иметь сервер генерирует полный HTML-код для страницы... но если это веб-сайт приложения, просто предоставляя тот же контент, который у вас был бы для URL-адрес корня и заполнение остальных с помощью Backbone Views и JavaScript отлично работает.

Это может показаться тривиальным вопросом, но мне интересно, может ли кто-нибудь помочь мне с некоторыми конкретными (желательно express) 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
};

У меня есть только маршрут верхнего уровня и маршрут для этой страницы. Итак, как мне настроить сервер node, который позволит мне перейти к:

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

Ответы

Ответ 1

Описание

Во-первых, вам нужно знать, что domain.com/#/about будет вызывать маршрут "/" вашего сервера, потому что он не читает фрагмент #. Ваш сервер будет отображать базу вашего приложения Backbone.js, а Backbone инициирует маршрут "about".

Итак, вам нужно объявить два маршрута в 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 ссылки для SEO-совместимости с Backbone.js от Derick Bailey: