Das Gute an Hapi ist, dass es Ihnen nicht vorschreibt, wie Sie Ihre Apps strukturieren sollten. Es liegt an dir, was auch immer Sinn in deinem Leben macht. Sie könnte werfen alles, was Sie in einem einzigen index.js
Datei haben und immer noch verwenden Sie alle Funktionen hapi, aber Sie werden wahrscheinlich eine schwere Zeit haben, Lesen/Wartung dieser Haarball später.
Wenn diese Struktur, die Sie zuvor verwendet haben, für Ihre Anwendung immer noch sinnvoll ist, gibt es nichts, was Sie daran hindert, dieselbe oder eine ähnliche Struktur zu verwenden.
models
- nur nicht-hapi bestimmten Knotenmodule, die
exports.getUser = function (id, callback) {
Db.get('users', id, callback)
};
controllers
zu Ihrem db sprechen - Module, die Route Handler
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
exportieren - Module, die joi Schemas exportieren
exports.showUserPage = {
params: {
id: Joi.number().required()
}
}
server.js
- wo man all das zusammen
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 kleben
Sie sollten wahrscheinlich Vorteil plugins nehmen, sie lassen Sie Ihre Anwendung in logische Stücke aufgeteilt. Sie können die obige Struktur trotzdem verwenden, aber in ein Plugin einfügen. Neue Funktionen, die Sie später hinzufügen, können innerhalb eines anderen Plug-Ins verwendet werden, wenn sie nicht miteinander verknüpft sind (Analytics, Store usw.). Auf diese Weise können Sie eine Microservice-Architektur erstellen, in der Sie einfach nur die spezifischen Teile Ihrer Anwendungen skalieren können, die skaliert werden müssen.
Was machen andere Leute?
Wenn Sie schauen es nur ändern, weil Sie können bereits mit hapi baute einen Blick auf ein paar Projekte nehmen und sehen, wie sie tun es:
Normalerweise sie alle Quelle setzen Code in de '/ lib' Ordner. Hier ist ein Beispiel App sie für Workshops verwenden https://github.com/hapijs/hapchat – Osukaa
Sie könnten auch einen Yeoman Generator https://github.com/jedireza/generator-hapi-style – Osukaa
"besser" in welchem Sinne? –