27 votes

Manière appropriée d'organiser myapp / routes / *

À l'aide de la dernière version stable node.js et express de mnp, j'ai créé mon premier projet de l'express.

Par défaut généré application définit routes/index.js qui contient une route qui rend l'index par défaut de la vue.

J'ai immédiatement pris pour acquis que je pourrais ajouter d'autres .js fichiers pour les itinéraires/ dossier, et qu'ils seraient inclus. Cela n'a pas concrétisées. Seulement routes/index.js est jamais inclus. L'ajout de voies de routes/index.js fonctionne très bien.

Quelle est la bonne façon de définir et d'organiser les itinéraires Express, à la suite de la structure prévue par le projet de l'express générateur?


La réponse, pour paraphraser l'article à DailyJS:

Étant donné les itinéraires suivants:

app.get('/', function() {});
app.get('/users', function() {});
app.get('/users/:id', function() {});

... Créer les fichiers suivants:

routes/
├── index.js
├── main.js
└── users.js

Puis, à l'intérieur de routes/index.js:

require('./main');
require('./users');

Pour chaque nouveau groupe d'itinéraires, de créer un nouveau fichier dans routes/ et require() à partir de routes/index.js. Utilisation main.js pour les itinéraires qui ne rentre pas vraiment dans les autres fichiers.

16voto

Timothy Strimple Points 7583

Je préfère charger dynamiquement des itinéraires au lieu d'avoir à ajouter manuellement un autre besoin à chaque fois que vous ajoutez un nouveau fichier d'itinéraire. Voici ce que j'utilise actuellement.

 var fs = require('fs');

module.exports = function(app) {
    console.log('Loading routes from: ' + app.settings.routePath);
    fs.readdirSync(app.settings.routePath).forEach(function(file) {
        var route = app.settings.routePath + file.substr(0, file.indexOf('.'));
        console.log('Adding route:' + route);
        require(route)(app);
    });
}
 

J'appelle cela lorsque l'application se charge, ce qui nécessite alors tous les fichiers dans routePath. Chaque itinéraire est configuré comme suit:

 module.exports = function(app) {
    app.get('/', function(req, res) {
        res.render('index', {
            title: 'Express'
        });
    });
}
 

Pour ajouter d'autres itinéraires, il ne vous reste plus qu'à ajouter un nouveau fichier au répertoire routePath.

1voto

J'ai écrit un module de noeud express-routescan et un article sur celui-ci (et semble votre problème) . Ce module permet d'organiser un routage maintenable pour une application express. Tu peux l'essayer. Et c'est bien sûr la meilleure solution pour moi.

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