node.js - req - post express node
La forma correcta de organizar myapp/routes/* (1)
Usando el último node.js estable y express de npm, he creado mi primer proyecto express.
La aplicación generada por defecto define routes / index.js, que contiene una ruta única que representa la vista de índice predeterminada.
Inmediatamente asumí que podía agregar otros archivos .js a las rutas / carpeta y se incluirían. Esto no funcionó. Only routes / index.js está incluido alguna vez. Agregar rutas adicionales a routes / index.js funciona bien.
¿Cuál es la forma correcta de definir y organizar rutas Express, siguiendo la estructura proporcionada por el generador de proyectos express?
La respuesta, parafraseando el artículo en DailyJS:
Dadas las siguientes rutas:
app.get(''/'', function() {});
app.get(''/users'', function() {});
app.get(''/users/:id'', function() {});
... Crea los siguientes archivos:
routes/
├── index.js
├── main.js
└── users.js
Luego, dentro de routes / index.js:
require(''./main'');
require(''./users'');
Para cada nuevo grupo de rutas relacionadas, crea un nuevo archivo en routes / y require () desde routes / index.js. Use main.js para las rutas que realmente no encajan en los otros archivos.
Prefiero cargar dinámicamente las rutas en lugar de tener que agregar manualmente otra solicitud cada vez que agregue un nuevo archivo de ruta. Esto es lo que estoy usando actualmente.
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);
});
}
Llamo esto cuando se carga la aplicación, que luego requiere todos los archivos en routePath. Cada ruta se configura de la siguiente manera:
module.exports = function(app) {
app.get(''/'', function(req, res) {
res.render(''index'', {
title: ''Express''
});
});
}
Para agregar más rutas, todo lo que tiene que hacer ahora es agregar un nuevo archivo al directorio routePath.