Хитрость в том, что ваше приложение должно знать, какие маршруты перехватывать на стороне клиента (например, с помощью Backbone) и на стороне сервера (например, с помощью node.js / Express.js). Это делается с помощью хеша ('#') в URL для ссылок, которые должны быть перехвачены Backbone. URL, не содержащие хеш, будут отправлены на сервер.
Ниже приведен пример добавления маршрутов к объекту Backbone router. Я также добавил маршрут по умолчанию ('* path'), который позволяет Backbone перехватывать любые другие пути на стороне клиента. Обратите внимание, что этот параметр по умолчанию работает только для URL-адресов, содержащих хэш ('#'):
// Configure router.
var AppRouter = Backbone.Router.extend({
routes: {
'contact/add': 'addContact',
'*path': 'defaultPage'
},
addContact: function() {
$content.html('Add');
},
defaultPage: function(path) {
$content.html('Default');
},
});
// Initialize router.
var appRouter = new AppRouter();
Backbone.history.start();
Соответствующая HTML-ссылка будет записана как:
<a href='/#contact/add'>Add</a>