Dans mon node.js express application j'ai app.js qui a un peu de routes. Puis dans un wf.js fichier je voudrais définir un peu plus d'itinéraires. Comment puis-je obtenir app.js reconnaître l'itinéraire d'autres gestionnaires qui ont été définis dans wf.js fichier? Un simple besoin ne semble pas fonctionner.
Réponses
Trop de publicités?Cochez cette officiel de l'exemple:
https://github.com/visionmedia/express/tree/master/examples/route-separation
MODIFIER
Si vous voulez mettre des itinéraires dans un fichier séparé, par exemple routes.js
Vous pouvez créer l'routes.js fichier de cette façon
module.exports = function(app){
app.get('/login', function(req, res){
res.render('login', {
title: 'Express Login'
});
});
//other routes..
}
Et puis vous pouvez exiger de app.js en passant l'objet d'application de cette façon:
require('./routes')(app);
Bâtiment sur @ShadowCloud 'exemple, j'ai été en mesure d'inclure de manière dynamique tous les itinéraires dans un sous-répertoire.
routes/index.js
var fs = require('fs');
module.exports = function(app){
fs.readdirSync(__dirname).forEach(function(file) {
if (file == "index.js") return;
var name = file.substr(0, file.indexOf('.'));
require('./' + name)(app);
});
}
Placer ensuite la route des fichiers dans le parcours de répertoire comme suit:
routes/test1.js
module.exports = function(app){
app.get('/test1/', function(req, res){
//...
});
//other routes..
}
De répéter que pour le nombre de fois que j'ai besoin et enfin dans app.js placer
require('./routes')(app);
Plein récursive de routage de tous .js fichiers à l'intérieur de /itinéraires dossier, mettez-le en app.js.
// Initialize ALL routes including subfolders
var fs = require('fs');
function recursiveRoutes(folderName) {
fs.readdirSync(folderName).forEach(function(file) {
var fullName = path.join(folderName, file);
var stat = fs.lstatSync(fullName);
if (stat.isDirectory()) {
recursiveRoutes(fullName);
} else if (file.toLowerCase().indexOf('.js')) {
require('./' + fullName)(app);
console.log("require('" + fullName + "')");
}
});
}
recursiveRoutes('routes'); // Initialize it
dans /itinéraires de vous mettre whatevername.js et initialiser vos routes, comme ceci:
module.exports = function(app) {
app.get('/', function(req, res) {
res.render('index', { title: 'index' });
});
app.get('/contactus', function(req, res) {
res.render('contactus', { title: 'contactus' });
});
}
Et construire encore plus sur la réponse précédente, cette version de routes/index.js va ignorer tous les fichiers se terminant par .js (et lui-même)
var fs = require('fs');
module.exports = function(app) {
fs.readdirSync(__dirname).forEach(function(file) {
if (file === "index.js" || file.substr(file.lastIndexOf('.') + 1) !== 'js')
return;
var name = file.substr(0, file.indexOf('.'));
require('./' + name)(app);
});
}