2012-06-28 7 views
5

में राउटर के रूप में निदेशक का उपयोग कैसे कर सकता हूं मैं फ़्लैटिरॉन के निदेशक (राउटर) और संसाधन (ओडीएम) के साथ express.js का उपयोग करना चाहता हूं क्योंकि मुझे रूटिंग टेबल के लाभ और सत्यापन के साथ बहु-डीबी स्कीमा साफ़ करने की आवश्यकता है। अब मैं फ्लैटिरॉन में पूरी तरह से स्विच क्यों कर रहा हूं, क्योंकि मुझे लगता है कि इसे कुछ और समय चाहिए और इसमें बहुत अधिक दस्तावेज़ नहीं है।मैं एक्सप्रेसज

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

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

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

दुर्भाग्य से यह काम नहीं करता है और मुझे सिर्फ देता है एक "नहीं मिल सकता /"

तो क्या करना है:

हालांकि, कि वर्तमान तरह से मैं एक्सप्रेस में निदेशक का उपयोग है?

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

एक्सप्रेस, resourceful और directorhere का उपयोग कर एक नमूना अनुप्रयोग है।

यदि आपको अधिक संदेह हैं, तो आप उन्हें हमारे आईआरसी कक्ष # नोडेजित्सु में फ्रीनोड पर पूछ सकते हैं।

+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 तीव्रता से तुलना की है। Flatiron घटकों के अच्छे विचार हैं (विशेष रूप से रूटिंग टेबल (निर्देशक), सत्यापन के साथ एक intuitiv स्कीमा एपीआई और स्कीमा कोड करने के लिए कई संभावनाएं)। ये चीजें वास्तव में भारी पेशेवर हैं लेकिन दूसरी ओर ऐसी चीजें हैं जो अंतर्ज्ञान को तोड़ती हैं। उदाहरण के लिए निदेशक का उपयोग करने के लिए "जटिल" तरीका (व्यापक समर्थन: सर्वर, क्लाइंट और क्ली, http) या डेटाबेस कनेक्शन बनाने का तरीका। मुझे योगदान करने के बारे में जानने के बिना इसकी आलोचना करने से नफरत है :(लेकिन शायद यह नोडजित्सस की मदद करता है :) –

संबंधित मुद्दे