Как я могу использовать директор в качестве маршрутизатора в ExpressJS
Я хочу использовать express.js с директором Flatiron (маршрутизатор) и Resourceful (ODM), потому что мне нужны преимущества таблиц маршрутизации и чистых схем из нескольких баз данных с проверкой. Причина, по которой я сейчас полностью переключаюсь на Flatiron, заключается в том, что я думаю, что для этого нужно больше времени и не так много материала для документации.
Однако в настоящее время я использую Director в Express:
var express = require('express')
, director = require('director');
function hello(){
console.log('Success');
}
var router = new director.http.Router({
'/': {
get: hello
}
});
К сожалению, это не работает и дает мне просто "Cannot GET /"
Так что же делать?
2 ответа
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'));
});
Вот пример приложения с использованием Express, находчивый и директор здесь.
Если у вас есть дополнительные сомнения, вы можете задать их в нашей комнате IRC#nodejitsu на freenode.
Во-первых, чтобы использовать Director, вы должны обернуть его в качестве промежуточного программного обеспечения и передать его для выражения, например, так:
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();
});
};
Кроме того: вам не нужен директор, чтобы использовать находчивый, и у экспресса есть свой собственный маршрутизатор (так что вам может даже не понадобиться / хотеть директор).