2015-09-22 2 views
0

Поскольку плагин «Инертный» теперь загружается отдельно. Я хочу зарегистрировать маршруты моего приложения. У меня есть 2 вариантаHapijs route registration pattern

1) Экспорт функцию, которая принимает «сервер» в качестве аргумента и писать код как

module.exports = function(server) { 
    server.register('inert', function(err) {}); 

    server.routes([....]); 
} 

И просто называют его от server.js в require('./routes.js')(serverObj)

2) осуществлять экспорт маршрутизации механизм как хапи плагин

exports.register = function(server, opts, next) { 
    server.register('inert', function(err) {}); 

    server.routes([....]); 

    next(); 
} 

и вызвать его из server.js, как server.register(require('./routes.js'), function(err) {});

Какой подход лучше или стандартизован? ИЛИ есть третий способ, о котором я не знаю.

Сторона Q: Кроме того, следует ли зарегистрировать «инертный» плагин перед вызовом функции маршрута/плагина в файле server.js?

ответ

1

server.route() может быть передан массив маршрутов, чтобы вы могли просто экспортировать маршруты как массив:

routes.js

module.exports = [ 
    { 
     method: 'GET', 
     path: '/', 
     handler: function (request, reply) { 

      ... 
     } 
    }, 
    ... 
]; 

И тогда требуется файл, когда вы делаете основной установка приложения:

index.js

server.register(require('inert'), function (err) { 

    if (err) { 
     throw err; 
    } 

    server.route(require('./routes')); 
    server.start(...) 
}); 

Сторона Q: Также должен ли я зарегистрировать «инертный» плагин перед вызовом функции маршрута/плагина в файле server.js?

Да, если вы используете file обработчика или directory обработчика, вам необходимо убедиться, что инертная загружен первым, в противном случае вы получите сообщение об ошибке при регистрации маршрутов.

Если вы решите зарегистрировать маршруты в плагине, которые зависят от этих обработчиков, вы можете использовать server.dependency(), чтобы выразить эту зависимость и задержку регистрации маршрутов до загрузки инертной. Это означает, что вам не нужно заботиться о том, какой заказ вы перечислите своими плагинами в server.register(). Полезно, если вы работаете с большим количеством плагинов или с большим приложением/командой.

Смежные вопросы