Хорошая вещь о хапи заключается в том, что он не диктует вам, как вы должны структурировать свои приложения. Это зависит от вас, потому что имеет смысл в вашей жизни. You может выбросить все, что у вас есть, в одном файле index.js
и еще использовать все функции hapi, но вам, вероятно, придется тяжело читать/поддерживать этот шарик позже.
Если эта структура выше, которую вы использовали ранее, по-прежнему имеет смысл для вашего приложения, абсолютно ничего не мешает вам использовать ту же или подобную структуру.
models
- просто не-Хапите конкретные модули узла, которые поговорить с дб
exports.getUser = function (id, callback) {
Db.get('users', id, callback)
};
controllers
- модулей, которые экспортируют обработчик маршрута
var User = require('../models/user');
exports.showUserPage = function (request, reply) {
User.getUser(request.params.id, function (err, user) {
if (err) {
throw err;
}
if (!user) {
return reply('User not found').code(404)
}
reply.view('user', user);
});
}
validators
- модули, которые экспортируют дзе схемы
exports.showUserPage = {
params: {
id: Joi.number().required()
}
}
server.js
- где вы склеить все это вместе
var Hapi = require('hapi');
var server = new Hapi.Server();
server.connection({ port: 7843 });
server.route({
method: 'GET',
path: '/users/{id}',
handler: require('./controller/users').showUserPage,
config: {
validate: require('./validators/users').showUserPage
}
});
server.start();
Плагины
Вы, вероятно, следует воспользоваться plugins, они позволяют разделить приложение на логические части. Вы все еще можете использовать указанную выше структуру, но поместите ее внутри плагина. Новые функции, которые вы добавите позже, могут попасть в другой плагин, если они не связаны (аналитика, хранилище и т. Д.). Это позволяет создавать архитектуру микросервиса, где легко масштабировать только те части приложений, которые нуждаются в масштабировании.
Что делают другие люди?
Если вы хотите, чтобы изменить его только потому, что вы можете, взглянуть на несколько проектов, уже построенных с Хапи, и посмотреть, как они делают это: веб-сайт
Обычно они помещают весь исходный код внутри де '/ lib' папки. Вот пример приложения, которое они используют для мастерских https://github.com/hapijs/hapchat – Osukaa
Вы также можете использовать генератор йомана https://github.com/jedireza/generator-hapi-style – Osukaa
«лучше» в каком смысле? –