2012-06-28 30 views
5

我想通过Flatiron的director(路由器)和Resourceful(ODM)使用express.js,因为我需要使用路由表和干净的多数据库模式进行验证的好处。 我现在完全改用Flatiron的原因是,因为我认为它需要更多的时间,而且没有太多的文档资料。我如何在expressjs中使用director作为路由器

但是,这是我在快递用导演的电流方式:

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

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

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

不幸的是,这并不工作,并给了我只是一个“无法GET /”

那么什么是呢?

+0

添加另一个路由变种为例,回购,以显示如何可以对顶部在自己的应用程序轻松地建立或扩展https://github.com/visionmedia/express/commit/39efa452fcb075a9a5870f1f71fe60a8742e687b –

回答

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')); 
}); 

存在使用快递,resourcefuldirectorhere一个示例应用程序。

如果您有更多疑问,可以在我们的IRC会议室#nodejitsu on freenode询问他们。

+0

谢谢你的!我会仔细看看子弹:) –

3

首先,为了使用你需要用它作为一个中间件,并通过它来表达,像这样总监:从

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(); 
    }); 
}; 

旁白:你并不需要导演用足智多谋,并表示有自己的路由器(所以你甚至可能不需要/想要导演)。

+0

嗨乔希,我比较快速和熨斗激烈。 flatiron组件具有良好的想法(特别是路由表(director),一个intuitiv模式api以及验证和编码模式的许多可能性)。这些东西真的很重要,但另一方面却存在破坏直觉的东西。例如,使用director的“复杂”方法(由于广泛的支持:server,client和cli,http)或创建数据库连接的方式。我讨厌批评这一点,而没有提供技术诀窍:(但也许它有助于nodejitsus :) –

相关问题