2012-07-06 14 views
7

Estoy buscando consejos subjetivos (y sé que esto podría cerrarse), pero quiero poder separar las rutas y los controladores en un proyecto node.js, así que tengo algunas preguntas :Uso de controladores y rutas por separado en Node.js

  • ¿Es inútil intentarlo y la filosofía de node.js es tener menos/archivos JS más grandes?
  • Quiero poder requerir ("enrutamiento") y hacer que se conecten todas mis rutas al módulo requerido para mis controladores. Puedo hacer esto fácilmente si simplemente pongo todo en index.js pero parece extraño. Ya estoy haciendo la separación de estilo app.get("/" controllers.index);, pero estoy colgado en la construcción de un módulo que solo incluye todos los archivos JS en otro módulo. ¿Me estoy perdiendo de algo?
  • O tal vez hay un estilo node.js completamente diferente para hacer esto, y estoy tratando de asignar mis conocimientos ASP.NET MVC demasiado profundamente?
+0

Pruebe un ligero MVC-expreso plancha https://github.com/pksunkara/bullet/tree/master/example / –

Respuesta

7

Si quería conseguir todo en un solo archivo, puede intentar algo como esto, lo que requiere cada archivo en ./routes/ y llama a la función exportada a cada uno con app como el parámetro:

// routing.js 

var fs = require('fs'); 

module.exports = function(app) { 
    fs.readdirSync(__dirname + '/routes/').forEach(function(name) { 
    var route = require('./routes/' + name); 
    route(app); 
    }); 
} 

// routes/index.js 

module.exports = function(app) { 
    app.get('/something', function(req, res) { ... }); 
    app.get('/something/else', function(req, res) { ... }); 
} 

// routes/pages.js 

module.exports = function(app) { 
    app.get('/pages/first', function(req, res) { ... }); 
    app.get('/pages/second', function(req, res) { ... }); 
} 

// server.js 

var app = express.createServer(); 
require('./routing')(app); // require the function from routing.js and pass in app 

También hay algunos ejemplos interesantes en el directorio Express 'example en GitHub, como an MVC-based one que implementa rutas RESTful de forma muy parecida a como lo haría Rails.

Cuestiones relacionadas