Iron Router одинаков как на клиенте, так и на сервере, и объявления могут быть сделаны в каталоге/файле, который доступен как клиенту, так и серверу.
По умолчанию объявленные маршруты предназначены для клиента. Если вы хотите, чтобы маршрут был на стороне сервера, вы явно указываете это, включая where: 'server'
.
Взято из официальной документации:
Определение маршрутов и настройка маршрутизатора практически идентичны на сервере и на клиенте. По умолчанию маршруты создаются как клиентские маршруты. Вы можете указать, что маршрут предназначен для сервера, указав свойство where для маршрута следующим образом:
Router.map(function () {
this.route('serverRoute', {
where: 'server',
action: function () {
// some special server side properties are available here
}
});
});
Обратите внимание, что where необходимо размещать в Router.map, а не на контроллере.
Функции действия сервера (RouteControllers) имеют различные доступные свойства и методы. А именно, рендеринга на сервере пока нет. Таким образом, метод рендеринга недоступен. Кроме того, вы не можете ждать подписки или вызывать метод ожидания на сервере. Маршруты сервера получают голый запрос, ответ и следующие свойства запроса Connect, а также объект params, как и в клиенте.
Router.map(function () {
this.route('serverFile', {
where: 'server',
path: '/files/:filename',
action: function () {
var filename = this.params.filename;
this.response.writeHead(200, {'Content-Type': 'text/html'});
this.response.end('hello from server');
}
});
});
Как видите, существует только одно соглашение об именах, поэтому вы можете указать что-то вроде этого:
Router.before(someFilter, {only: ['clientRoute1', 'clientRoute2', 'serverRoute1']});
or
Router.before(someOtherFilter, {except: ['clientRoute3', 'clientRoute4', 'serverRoute2']});
как обычно.
person
Serkan Durusoy
schedule
25.02.2014