我正在尝试在 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;
这是我想使用的代码样式的示例,但会产生“TypeError:Object is not a function”错误,因为我实际上并没有分配给module.exports,只是一个复制了它所指向的变量到。
(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);
有没有办法让我使用上述自执行格式并让我的模块导出构造函数?