106 votes

Node.js + Express : Routes vs contrôleur

Nouveau à Node.js et Express, j'essaie de comprendre les deux concepts qui semblent se chevaucher, routes vs contrôleur.

J'ai vu des exemples qui font simplement app.js + routes/*, cela semble être suffisant pour acheminer les différentes requêtes nécessaires.

Cependant, je vois aussi des gens qui parlent d'utiliser des contrôleurs, et certains qui impliquent un modèle MVC plus formel ( ???).

Ce serait génial si quelqu'un pouvait m'aider à éclaircir ce mystère, et si vous avez un bon exemple de mise en place d'un contrôleur dans Node.js + Express framework, ce serait génial !

Gracias,

138voto

Brandon Tilley Points 49142

L'un des avantages d'Express (et de Node en général) est qu'il ne vous impose pas beaucoup d'opinions ; l'un des inconvénients est qu'il ne vous impose aucune opinion. Ainsi, vous êtes libre (et tenu !) de mettre en place de telles opinions (modèles) par vous-même.

Dans le cas d'Express, il est tout à fait possible d'utiliser un modèle MVC, et un gestionnaire de route peut certainement jouer le rôle d'un contrôleur si vous le souhaitez, mais vous devez le configurer de cette façon. Un excellent exemple peut être trouvé dans le Dossier d'exemples express appelé mvc . Si vous regardez lib/boot.js vous pouvez voir comment ils ont configuré l'exemple pour exiger chaque fichier dans le fichier controllers et génère les routes Express à la volée en fonction du nom des méthodes créées sur les contrôleurs.

2voto

Vous pouvez avoir juste un dossier sur les routes ou les deux. Par exemple, certains définissent des routes/chemins (ex. /user/:id) et les connectent à Get, Post, Put/Update, Delete, etc. et ensuite dans le dossier routes :

const subController = require('./../controllers/subController');

Router.use('/subs/:id');

Router
 .route('subs/:id')
 .get(subController.getSub)
 .patch(subController.updateSub);

Ensuite, dans le dossier des contrôleurs :

exports.getSub = (req, res, next) => {
  req.params.id = req.users.id;
};

Juste pour faire quelque chose. J'ai fait des projets sans dossier de contrôleurs, et j'ai placé toute la logique à un seul endroit.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X