2012-06-28 7 views
5

Ich möchte express.js mit Flatiron-Direktor (Router) und Resourceful (ODM) verwenden, weil ich die Vorteile von Routing-Tabellen und saubere Multi-DB-Schemas mit Validierung brauchen. Der Grund, warum ich jetzt komplett auf Flatiron umsteige, ist, weil ich denke, dass es etwas mehr Zeit braucht und es nicht viel Doc-Material gibt.Wie kann ich Director als Router in expressjs verwenden

Das ist jedoch die aktuelle Art, wie ich Direktor in Express verwenden:

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

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

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

Unfortunatly dies nicht und mir funktioniert gibt nur eine „Kann nicht GET /“

Also, was zu tun ist?

+0

eine weitere Routing-Variante Beispiel an den Repo hinzugefügt zu zeigen, wie Sie ganz einfach auf der in Ihrer eigenen App oder eine Erweiterung https://github.com/visionmedia/express/commit/39efa452fcb075a9a5870f1f71fe60a8742e687b –

Antwort

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

Es ist eine Beispielanwendung mit Express, resourceful und directorhere.

Wenn Sie mehr Zweifel haben, können Sie sie in unserem IRC-Raum #nodejitsu auf Freenode fragen.

+0

Sie, dass bauen danken ! Ich werde einen genaueren Blick auf die Kugel werfen :) –

3

Erstens, um Direktor Sie es verwenden müssen als Middleware einpacken und weitergeben, zum Ausdruck bringen, wie so:

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

Abgesehen davon: Sie müssen nicht Direktor brauchen einfallsreich zu verwenden, und Express hat seinen eigenen Router (damit Sie nicht einmal brauchen/wollen, Regisseur).

+0

Hi josh, ich habe Express und Flatiron intensiv verglichen. Die Flatiron-Komponenten haben gute Gedanken (vor allem Routing-Tabellen (Director), eine intuitive Schema-API mit Validierung und viele Möglichkeiten, das Schema zu programmieren). Diese Dinge sind wirklich schwere Profis, aber auf der anderen Seite gibt es Dinge, die die Intuition brechen. Zum Beispiel die "komplizierte" Art, Director zu verwenden (wegen der breiten Unterstützung: Server, Client und CLI, http) oder die Art, eine Datenbankverbindung zu erstellen. Ich hasse es, dies zu kritisieren, ohne das Know-how zu haben :(aber vielleicht hilft es dem nodejitsus :) –

Verwandte Themen