2012-06-28 22 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 :) –

相關問題