NodeJS - как назначить конструктор модулю.экспорт в самоисполняющейся функции?

Я пытаюсь назначить конструктор в самоисполняющейся функции в NodeJS. Я уверен, что он не работает, потому что мой параметр является переменной, указывающей на модуль.экспорт, но я интересно, если есть способ, чтобы заставить его работать, оставаясь как можно ближе к самоисполняющиеся формате, как это возможно.

вот как вызывается код...

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", потому что я фактически не назначаю модулю.экспорт, просто переменная, которая копировала то, на что указывала.

(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);

есть ли способ для меня использовать вышеуказанный самоисполняющийся формат и экспортировать мой модуль в конструктор?

1 ответов


во втором примере вы просто перезаписываете