如何在出口功能中更换IIFE

时间:2016-05-15 13:04:42

标签: javascript node.js

我使用以下代码并且工作正常,这是server.js

function start() {
    server.listen(app.get('port'), function (err) {
        if (err) {
            console.error(err);
        } else {
            pr.preProcess();
            console.log('server Listening on port : ' + app.get('port'));
        }
        proxy.web(server);
    });
}

这是Im导出的模块

module.exports = function (params) {

Loader.load(params.loadFolder);
    if (_.isEmpty(params)) {
        start();
    } else {
        start();
        Loader.loadFolder(params.loadFolder);
    }
    return {
        start: start,
        pluginLoader: pluginLoader.loadFolderFromPath
    }
}();

此module.exports使用() IIFE(在导出结束时)使其工作,  并且我想要避免它,有一种更简洁的方法可以在没有括号的情况下做到这一点吗?

2 个答案:

答案 0 :(得分:0)

关闭(),调用导入它的函数。:

module.exports = function (params) {

Loader.load(params.loadFolder);
    if (_.isEmpty(params)) {
        start();
    } else {
        start();
        Loader.loadFolder(params.loadFolder);
    }
    return {
        start: start,
        pluginLoader: pluginLoader.loadFolderFromPath
    }
}; // take off ()

每当你导入/需要这个函数时,把它们重新打开以获得结果。

答案 1 :(得分:0)

重写为函数声明/使用function作为语句

module.exports = buildLoader();

function buildLoader(params) {
    Loader.load(params.loadFolder); // are you sure you wanted to do this twice? (cf. else)

    if (_.isEmpty(params)) {
        start();
    } else {
        start();
        Loader.loadFolder(params.loadFolder);
    }

    return {
        start: start,
        pluginLoader: pluginLoader.loadFolderFromPath
    };
}