2012-09-05 29 views
7

मुझे निम्न स्थिति का सामना करना पड़ रहा है। मेरे सॉफ्टवेयर विकास को आगे बढ़ाने के लिए, मैंने कुछ मानक मॉड्यूल अकेले खड़े हैं। एक्सप्रेस और पासपोर्ट के आधार पर लॉगिन मॉड्यूल के उदाहरण के लिए सोचें, जिससे उपयोगकर्ता सभी प्रकार की सामाजिक सेवाओं के साथ लॉगिन कर सकें। मॉड्यूल में यूजर प्रबंधन, लॉगिन, पंजीकरण, प्रोफाइल इत्यादि के लिए यूआई भी शामिल है।नोड.जेएस एक्सप्रेस: ​​किसी अन्य एप के अंदर एक ऐप की आवश्यकता/उपयोग करें

अब, जो चीज मैं करने की कोशिश कर रहा हूं वह सिर्फ एथ ऐप फ़ोल्डर को छोड़ना है (एक्सप्रेस ऐप, इसके सभी मार्ग, विचार , मॉडल, सेटिंग्स और निर्भरता) एक और एक्सप्रेस ऐप (उदाहरण के लिए, एक सीएमएस) में और फिर require('./lib/auth/app.js') जैसे कुछ के साथ लोड करें। मुझे पता है कि यह संभव है, Kue पर एक नज़र डालें।

मैं यह करने के बारे में कैसे जाउंगा? और मैं नेमस्पेसिंग समस्याओं का प्रबंधन कैसे करूं? मैं प्रत्येक मार्ग पर /auth/ जोड़ सकता हूं, लेकिन मैं सेटिंग्स (app.use()) की कल्पना कर सकता हूं और सार्वजनिक फ़ोल्डर 'पैरेंट' app.js 'सेटिंग्स और सार्वजनिक फ़ोल्डर के साथ संघर्ष करेगा।

अग्रिम धन्यवाद,

फैबियन

उत्तर

6

सोचो मैं अपने जवाब मिल गया। तो, मुझे this question, और this one मिला। मान लीजिए मेरी शब्दावली बंद थी।

मैंने कुछ चीजें करके मेरी समस्या हल की। सबसे पहले, मैंने सभी मार्गों और यूआरएल को "नेमस्पेस्ड" के रूप में बदल दिया (वास्तव में नहीं, लेकिन यह नौकरी करता है)। सभी मार्गों के पास अब उनके सामने /auth/ है। मैंने सभी लिंक के लिए भी ऐसा ही किया, इसलिए यह सब काम कर रहा है।

अगला, मैंने अपने app.js. से सर्वर भाग हटा दिया। तो, ऐसा करने का जगह में:

require('http').createServer(app).listen(app.get('port'));

मैं सिर्फ कार्य करें:

module.exports = app;

और मैं एप्लिकेशन वस्तु के लिए कुछ कस्टम विधियों को जोड़ने:

app.isLoggedIn = auth.isLoggedIn; 
app.notLoggedIn = auth.notLoggedIn; 

तब में, मेरा रूट ऐप, मैं auth एप लोड करने के लिए बस निम्नलिखित करता हूं। रूटिंग, सार्वजनिक फाइलें, और अन्य सभी चीजें जादुई रूप से होती हैं। बहुत अच्छा।

var auth = require('./vendor/auth/app'); 
var app = express(); 

app.configure(function() { 
    app.use(auth); // use our auth app 

    // do a lot of root-app related stuff... 
}); 

हालात अभी भी करने के लिए:

मेरे auth एप्लिकेशन कुछ सत्र सामान का उपयोग करता है। दूसरे link के अनुसार, यदि मैं सही ढंग से समझता हूं, तो app.use(session...) मेरे auth ऐप में app.use द्वारा ओवरराइड हो जाता है। इसके अलावा, मैं अपने यूआरएल उत्पन्न करने के लिए एक ईजेएस सहायक को परिभाषित करना चाहता हूं (site_url('/facebook/callback') जैसे कुछ जो /auth/facebook/callback पर इंगित करता है)। अंत में, मुझे अपने रूट ऐप से सेटिंग्स को शामिल करने की आवश्यकता है। मैं एक समारोह में अपने पूरे app.js (auth में) लपेटने की सोच रहा हूं, जिसके लिए मैं एक कॉन्फ़िगर ऑब्जेक्ट पास करता हूं। इस तरह:

module.exports = function(config) { 
    var app = express(); 

    app.set('config', config); 
    // various app settings, routes, etc 

    // return app so it's available in my root. 
    return app; 

} 

मुझे आशा है कि इस मदद करता है, आप थोड़ा और अधिक जानकारी है अगर मैं एक सार करने के लिए कुछ कोड पोस्ट कर सकते हैं मैं देखेंगे की जरूरत है। बस मुझे पता है!