2012-06-28 13 views
5

Quiero usar express.js con el director (enrutador) de Flatiron y Resourceful (ODM) porque necesito los beneficios de las tablas de enrutamiento y los esquemas multi-db limpios con validación. La razón por la que ahora me cambio completamente a Flatiron es porque creo que necesita más tiempo y no hay mucho material de documentación.¿Cómo puedo usar el director como enrutador en expressjs

Sin embargo, esa es la forma actual utilizo el director de expreso:

var express = require('express') 
    , director = require('director'); 

function hello(){ 
    console.log('Success'); 
} 

var router = new director.http.Router({ 
    '/': { 
     get: hello 
    } 
}); 

Desafortunadamente esto no funciona y me da simplemente un "no se puede conseguir a /"

Entonces, ¿qué es hacer?

+0

añadió otro ejemplo variante de enrutamiento para el repositorio para mostrar cómo se puede construir fácilmente en la parte superior de en su propia aplicación o una extensión https://github.com/visionmedia/express/commit/39efa452fcb075a9a5870f1f71fe60a8742e687b –

Respuesta

5
var express = require('express') 
    , director = require('director') 
    , http = require('http'); 

var app = express(); 

var hello = function() { 
    this.res.send(200, 'Hello World!'); 
}; 

var router = new director.http.Router({ 
    '/': { 
    get: hello 
    } 
}); 

var middleware = function (req, res, next) { 
    router.dispatch(req, res, function (err) { 
    if (err == undefined || err) next(); 
    }); 
}; 

app.configure(function(){ 
    app.set('port', process.env.PORT || 3000); 
    app.set('views', __dirname + '/views'); 
    app.set('view engine', 'jade'); 

    app.use(express.favicon()); 
    app.use(express.bodyParser()); 

    app.use(middleware); 

    app.use(express.static(__dirname + '/public')); 
}); 

http.createServer(app).listen(app.get('port'), function(){ 
    console.log("Express server listening on port " + app.get('port')); 
}); 

No es una aplicación de ejemplo usando expreso, resourceful y directorhere.

Si tiene más dudas, puede preguntarlas en nuestra sala de IRC#nodejitsu en freenode.

+0

gracias por eso ! Echaré un vistazo más de cerca a la bala :) –

3

En primer lugar, con el fin de utilizar el director que necesita para envolverlo como un middleware y pasarlo a expresar, así:

app.use(function (req, res, next) { 
    router.dispatch(req, res, function (err) { 
    if (err) { 
     // handle errors however you like. This one is probably not important. 
    } 
    next(); 
    }); 
}; 

Aparte de eso: No es necesario utilizar el director de recursos, y express tiene su propio enrutador (por lo que es posible que ni siquiera necesite/quiera director).

+0

Hola josh, he comparado express y flatiron intensivly. Los componentes flatiron tienen buenas ideas (especialmente tablas de enrutamiento (director), una API de esquema intuitivo con validación y muchas posibilidades para codificar el esquema). Estas cosas son realmente buenas, pero en el otro lado hay cosas que rompen la intuición. Por ejemplo, la forma "complicada" de usar el director (debido a la amplia compatibilidad: servidor, cliente y cli, http) o la forma de crear una conexión de base de datos. Odio criticar esto sin tener el conocimiento para contribuir :(pero tal vez ayude al nodejitsus :) –

Cuestiones relacionadas