Comment stocker des itinéraires dans des fichiers séparés lors de l'utilisation de Hapi?
Tous les Hapi exemples (et similaire dans l'Express) montre les routes sont définies dans le fichier de démarrage:
var Hapi = require('hapi');
var server = new Hapi.Server();
server.connection({ port: 8000 });
server.route({
method: 'GET',
path: '/',
handler: function (request, reply) {
reply('Hello, world!');
}
});
server.route({
method: 'GET',
path: '/{name}',
handler: function (request, reply) {
reply('Hello, ' + encodeURIComponent(request.params.name) + '!');
}
});
server.start(function () {
console.log('Server running at:', server.info.uri);
});
Cependant, il n'est pas difficile à l'image de la taille de ce fichier lors de la mise en production de l'application avec une tonne de différents itinéraires. Par conséquent, je tiens à briser les routes, les regrouper et de les stocker dans des fichiers distincts, comme UserRoutes.js, CartRoutes.js et puis les attacher dans le fichier principal (ajouter à l'objet serveur). Comment pouvez-vous suggérer à séparer ce puis ajouter?
Vous devez vous connecter pour publier un commentaire.
Vous pouvez créer un fichier séparé pour l'utilisateur routes (
config/routes/user.js
):De même avec le chariot. Puis créer un fichier d'index dans
config/routes
(config/routes/index.js
):Vous pouvez ensuite charger ce fichier d'index dans le fichier principal et appel
server.route()
:Sinon, pour
config/routes/index.js
, au lieu d'ajouter de la route des fichiers (par exemplecart
,user
) manuellement, vous pouvez les charger dynamiquement:require
d modules.Vous devriez essayer de la Colle plugin: https://github.com/hapijs/glue. Il vous permet de modulariser votre application. Vous pouvez placer vos itinéraires dans différents sous-répertoires et puis les inclure comme Hapi.js les plugins. Vous pouvez également inclure d'autres plugins (Inerte, de la Vision, de la Bonne) avec de la Colle ainsi que la configuration de votre application avec un manifeste de l'objet (ou le fichier json).
Rapide exapmple:
server.js:
./modules/index/index.js:
./modules/index/paquet.json:
./modules/index/home.js:
Ont un coup d'oeil à cette merveilleux article par Dave Stevens pour plus de détails et d'exemples.
Vous pouvez utiliser nécessitent-hapiroutes à faire partie de l'organisation et de chargement pour vous. (Je suis l'auteur, donc je suis un peu biaisé, je l'ai écrit pour me rendre la vie plus facile dans la gestion des routes)
Je suis un grand fan de nécessitent-répertoire et de et de voulu un façon de gérer mes parcours tout aussi facilement. Cela vous permet de mélanger et assortir les itinéraires de vos modules et des modules dans des répertoires avec les routes.
Vous pouvez faire quelque chose comme ça...
Puis dans votre répertoire, vous pouvez avoir un fichier de route comme...
Ou, vous pouvez mélanger et assortir par l'attribution d'une "route" de la propriété sur le module
Toujours bon d'avoir le choix. Il y a plein de documentation sur le github ou npmjs site pour cela.
ou vous pouvez utiliser un fichier d'index pour charger toutes les routes
dans le répertoire
index.js
d'autres fichiers dans le même répertoire comme:
et que dans la racine de votre/index
Intéressant de voir autant de solutions différentes, en voici une autre.
D'expansion à la rescousse
Pour mon dernier projet que j'ai installé sur d'expansion pour les fichiers avec un nom de modèle, puis d'exiger d'eux dans le serveur un par un.
Routes d'importation après avoir créé le
server
objetLe glob modèle
**/*route*.js
trouverez tous les fichiers à l'intérieur et en dessous du répertoire de travail en cours avec un nom qui contient le mot route et se termine par le suffixe .js.Structure du fichier
Avec l'aide de l'expansion, nous avons un couplage lâche entre les
server
objet et de ses itinéraires. Juste ajouter un nouvel itinéraire fichiers et ils seront inclus la prochaine fois que vous redémarrez votre serveur.J'aime la structure de la route des fichiers en fonction de leur chemin et de les nommer avec leurs HTTP-méthode, comme suit:
Exemple de fichier de route
routes/users/get-route.js
Réflexions
D'expansion et de parcourir les fichiers n'est pas particulièrement rapide, d'où une couche de mise en cache peut être utile de l'examiner dans la production construit en fonction de vos circonstances.
Essayer hapi-auto-route plugin! Il est très simple à utiliser et permettent de préfixe dans votre route.
Je sais que c'est déjà approuvé. J'ai mis ma solution au cas où quelqu'un veut une solution rapide et de nouveau à Hapi.
Aussi j'ai inclus quelques MNP trop pour Newbees pouvez voir comment utiliser le
server.register
avec plusieurs plugin dans le cas (good
+hapi-auto-route
)Installé quelques packages npm:
Dans votre
routes/user.js
Exécuter:
node server.js
Acclamations