मैं एक्सप्रेस फ्रेमवर्क ऐप के साथ उल्का करने के लिए एक node.js को बदलने की कोशिश कर रहा हूं। मूलतः https://github.com/onmodulus/demeteorizerक्या एक एक्सप्रेस ऐप को उल्का में बदलने का कोई आसान तरीका है?
उत्तर
निश्चित रूप से स्वचालित रूप से नहीं की रिवर्स रास्ता कर रही है, लेकिन चाल का एक समूह आप श्रृंखला के लिए एक साथ कर सकते हैं लगभग यह स्वचालित रूप से प्राप्त कर रहे हैं।
मैं बस इतना ही कर रहा हूं और यहां इसके लिए मेरी सभी चालें हैं।
चलो अपने एक्सप्रेस ऐप मुख्य .js फ़ाइल से शुरू करते हैं।
/server/main.js
: यह एक आप शीर्ष पर निम्न जोड़ने की जरूरत है
routes = {};
var app = {
get: function(route, foo) {
// routes.get[route] = foo;
routes[route] = foo;
},
all: function(route, foo) {
// routes.all[route] = foo;
routes[route] = foo;
}
};
सभी इस करता app
कार्यों की जरूरत है, एक वस्तु के रूप में परिभाषित मार्गों को परिभाषित है, और रिकॉर्ड करने के लिए जो हम बाद में करेंगे है iron-router
का उपयोग करके उन मार्गों को परिभाषित करने के लिए उपयोग करें। तो यह सुनिश्चित करें कि निम्नलिखित तरह बातें routes
में दर्ज हो बनाता है:
/server/main.js
:
app.get('/show', function(req, res) {
res.render('mytemplate');
});
वास्तव में मुख्य चाल है यही कारण है कि। यहां से सिर्फ श्रम पर।
अच्छी उल्का शैली में, हम सभी रूट रेंडरिंग कॉल को फाइबर में लपेटेंगे, ताकि उन्हें उल्का सर्वर पर अन्य सभी की तरह समकालिक बना दिया जा सके। इसके लिए, हम एक रैपिंग फ़ंक्शन waiter
परिभाषित करते हैं कि हम मार्ग कार्यों को लपेटने के लिए बार-बार उपयोग कर सकते हैं। और जब हम इसे जोड़ते हैं, हम कनेक्ट अनुरोध और प्रतिक्रिया को मालिश करेंगे कि हम उल्का सर्वर पर लोहे के मार्गों से res
और req
ऑब्जेक्ट एक्सप्रेस में देखना चाहते हैं। आपको याद है: यह किसी भी खिंचाव से पूरा नहीं है। यह केवल उन हस्ताक्षर हैं जिन्हें मैं इन वस्तुओं से उपयोग करना चाहता था।
/server/main.js
:
/** create an sync version for meteor */
waiter = function(foo, req, res) {
var waiter_aux = Meteor._wrapAsync(function(foo, req, res, callback) {
res.set = function(header, value) {
res.setHeader(header, value);
};
res.send = function(codeorhtml, html) {
if (html) {
// two arguments provided, treat as described
res.statusCode = codeorhtml;
} else {
// no code, just html
html = codeorhtml;
}
callback(null, html);
};
res.render = function(name, data, callback) {
callback = callback || function(err, html) {
res.send(html);
};
var html = Handlebars.templates[name](data);
callback(null, html);
};
res.json = function(object) {
res.send(JSON.stringify(object));
}
res.redirect = function(URL) {
res.writeHead(302, {
'Location': URL
});
res.end();
};
req.header = function(x) {
return this.header[x];
};
TemplatesObject = Handlebars.templates;
// these objects need to be extended further
foo(req, res);
});
return waiter_aux(foo, req, res);
};
अंत में, असली सौदा: प्रत्येक निर्दिष्ट एक्सप्रेस मार्ग के लिए मार्गों का निर्माण। इसके लिए हम iron-router का उपयोग करेंगे। निम्नलिखित कोड प्रत्येक परिभाषित मार्ग (हमारे नए सिरे से परिभाषित app
कार्यों से पकड़ा और routes
में संग्रहीत) के माध्यम से जाना होगा, और हमारे waiter
का उपयोग कर एक फाइबर में लपेट, जो भी this.request
/this.response
और req
और res
वस्तुओं के बीच अनुवाद करने का ख्याल रखना होगा व्यक्त एप्स मानते हैं।
/routes.js
:
if (Meteor.isServer) {
// create routes for all the app.get's and app.all's in bibbase.js
// (server)
console.log("setting routes:", routes);
_.each(routes, function(foo, route) {
Router.map(function() {
this.route(route, {
path: route,
where: 'server',
action: function() {
this.request.params = this.params;
var html = waiter(foo, this.request, this.response);
if (!this.response.statusCode) {
this.response.statusCode = 200;
}
if (!this.response.getHeader('Content-Type')) {
this.response
.setHeader('Content-Type', 'text/html');
}
this.response.end(html);
}
});
});
});
}
इन सबसे आवश्यक चीजें मैं पूरा करने के लिए आप क्या बारे में पूछ रहे हैं किया है। मुझे यकीन है कि मैंने यहां कुछ विवरण याद किए हैं, लेकिन इससे आपको एक विचार देना चाहिए।बाद Spacebars के लिए
अद्यतन (मैं उल्का का कौन सा संस्करण था कि भूल जाते हैं):
आदेश में यह काम करने के लिए, अब आप handlebars-server जोड़ने की जरूरत:
meteor add cmather:handlebars-server
नहीं
यह एक बहुत ही प्रभावशाली उत्तर है! – imslavko
- 1. क्या सी # में एक स्ट्रिंग में char को बदलने का कोई आसान तरीका है?
- 2. स्कैला में, क्या केस क्लास को टुपल में बदलने का कोई आसान तरीका है?
- 3. क्या बिटबकेट पाइपलाइन डॉकर कंटेनर में गैर-रूट उपयोगकर्ता में बदलने का कोई आसान तरीका है?
- 4. एक उल्का ऐप में कैश मैनिफेस्ट जोड़ने का सरल तरीका?
- 5. संग्रह को सरणी में बदलने का सबसे आसान तरीका?
- 6. रेगेक्स को जावा संगत रेगेक्स में बदलने का आसान तरीका?
- 7. क्या ओपनिड को लागू करने का कोई आसान तरीका है?
- 8. पेपैल एक्सप्रेस चेकआउट को एकीकृत करने का आसान तरीका?
- 9. खाली जावा/स्प्रिंग फॉर्म इनपुट को शून्य तारों में बदलने का कोई आसान तरीका है?
- 10. क्या JDialog के मालिक को बदलने का कोई तरीका है?
- 11. संयुक्त उल्का और एक्सप्रेस
- 12. क्या मेरे Silverlight ऐप को तैनात करने और प्रोग्रामेटिक रूप से सेटिंग्स बदलने के लिए कोई आसान तरीका है?
- 13. क्या जावास्क्रिप्ट लुकअप टेबल बनाने का कोई आसान तरीका है?
- 14. कैलेंडर ऐप जैसे एंड्रॉइड ऐप आइकन को गतिशील रूप से बदलने का कोई तरीका है?
- 15. एक साधारण sinatra ऐप को स्थिर HTML पृष्ठों में बदलने का बेहतर तरीका क्या है?
- 16. क्या प्रिंटवाइटर को प्रिंटस्ट्रीम में परिवर्तित करने का कोई आसान और सुरक्षित तरीका है?
- 17. रेल नियंत्रकों का नाम बदलने का आसान तरीका
- 18. क्या कोडनिर्देशक पर सबडोमेन बनाने का कोई आसान तरीका है?
- 19. क्या MySQL डेटा को शीर्षक केस में परिवर्तित करने का कोई आसान तरीका है?
- 20. क्या पांडस डेटाफ्रेम में हां/नहीं 1/0 के कॉलम को बदलने का कोई आसान तरीका है?
- 21. क्या c3js के साथ लेबल बदलने का कोई तरीका है?
- 22. क्या केकपीएचपी में एक दृश्य से AuthComponent उपयोगकर्ता डेटा प्राप्त करने का कोई आसान तरीका है?
- 23. क्या एसएसआरएस डिज़ाइन मोड में टैबलेट कॉलम को पुनर्व्यवस्थित करने का कोई आसान तरीका है?
- 24. क्या मानदंड को एचक्यूएल में परिवर्तित करने का कोई आसान तरीका है?
- 25. क्या आईओएस में ऐप हटाए जाने का कोई तरीका है?
- 26. एक उल्का ऐप
- 27. क्या मैटलैब-आधारित वेब ऐप या वेब सेवा प्रदान करने का कोई आसान तरीका है?
- 28. एक उल्का ऐप
- 29. क्या एंड्रॉइड में कैमरा शटर ध्वनि को बदलने या चुप करने का कोई तरीका है?
- 30. किसी iPhone ऐप में डेटा को बनाए रखने का सबसे आसान तरीका क्या है?
शायद में एक्सप्रेस ऐप और उल्का ऐप बनाने के मॉडल के रूप में कोई भी स्वचालित तरीका बहुत अलग है। – imslavko
मुझे नहीं पता कि ये लोग किस प्रश्न को ध्वजांकित करते हैं। मेरे लिए यह सवाल है कि सवाल क्या है। अगर ऐसा नहीं होता तो मैं इसका जवाब कैसे दे पाऊंगा? स्पष्ट होने के लिए एक प्रश्न को लंबे समय तक होने की आवश्यकता नहीं है। –