NodeJS の自己実行関数にコンストラクターを割り当てようとしています。私のパラメーターはmodule.exportsを指す変数であるため、機能していないと確信していますが、できるだけ自己実行形式に近づけながら機能させる方法があるかどうか知りたいです。
コードの呼び出し方法は次のとおりです...
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;
これが私が使用したいコードスタイルの例ですが、実際にはmodule.exportsに割り当てていないため、「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);
上記の自己実行形式を使用して、モジュールにコンストラクターをエクスポートさせる方法はありますか?