मैं नोडजेएस में एक स्व-निष्पादन समारोह में एक कन्स्ट्रक्टर असाइन करने का प्रयास कर रहा हूं। मुझे पूरा यकीन है कि यह काम नहीं कर रहा है क्योंकि मेरा पैरामीटर मॉड्यूल.एक्सपोर्ट्स पर इशारा करते हुए एक चर है, लेकिन अगर मैं संभवतः स्वयं निष्पादन प्रारूप के करीब रहने के दौरान काम करने का कोई तरीका है तो मैं उत्सुक हूं।नोडजेएस - स्वयं निष्पादन समारोह में मॉड्यूल.एक्सपोर्ट्स के लिए कन्स्ट्रक्टर को कैसे असाइन करें?
यहाँ कैसे कोड बुलाया जा रहा है ...
var TemplateEngine = require('./templateEngine');
templateEngine = new TemplateEngine({engine: 'swig'}); // "object is not a function"
यहाँ कोड है कि ठीक काम करता है, इसका एक उदाहरण ...
var assert = require('assert');
var swig = require('swig');
// Constructor
var TemplateEngine = function(args) {
assert.ok(args.engine, 'engine is required');
var templateEngine = {};
templateEngine.engine = args.engine;
templateEngine.Render = function(templateString, model) {
var result = swig.render(templateString, model);
return result;
};
return templateEngine;
};
module.exports = TemplateEngine;
और यहाँ कोड शैली मैं था का एक उदाहरण है उपयोग करने के लिए, लेकिन जो "TypeError: ऑब्जेक्ट फ़ंक्शन नहीं है" त्रुटि उत्पन्न करता है क्योंकि मैं वास्तव में मॉड्यूल.एक्सपोर्ट्स को असाइन नहीं कर रहा हूं, केवल एक वेरिएबल जो कुछ भी इंगित कर रहा था उसकी प्रतिलिपि बनाई गई है।
(function(templateEngine) {
var assert = require('assert');
var swig = require('swig');
templateEngine = function(args) {
assert.ok(args.engine, 'engine is required');
var templateEngine = {};
templateEngine.engine = args.engine;
templateEngine.Render = function (templateString, model) {
var result = swig.render(templateString, model);
return result;
};
return templateEngine;
};
})(module.exports);
वहाँ मेरे लिए एक तरह से ऊपर स्वयं को क्रियान्वित करने के प्रारूप का उपयोग और मेरे मॉड्यूल निर्यात एक निर्माता के लिए है?
module.exports करने की जरूरत है दूसरे कोड में असाइन किया जा सकता है, शायद मॉड्यूल.एक्सपोर्ट्स = नया टेम्पलेटइंजिन(); ? – dandavis
आपके पास कई टेम्पलेट इंजन हैं ... – lujcon
इस शैली की आवश्यकता नहीं है। आप इसे निजी चर छुपाने के लिए उपयोग कर सकते हैं ... लेकिन क्लाइंट साइड पर। नोडजेज़ में मॉड्यूल के साथ सबकुछ मॉड्यूल को सौंपा नहीं जाता है। निर्यात निजी है इसलिए यह पैटर्न बेकार है। – lujcon