Javascript 如何在导出功能中替换IIFE
我正在使用下面的代码,它工作正常,这是server.jsJavascript 如何在导出功能中替换IIFE,javascript,node.js,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 : '
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);
});
}
这是我正在导出的模块
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使用()iLife(在导出结束时)使其工作,
如果我想避免它,有一种更干净的方法可以做到这一点,而不必在末尾使用括号?关闭()
,调用导入它的函数:
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 ()
在每次导入/需要函数时,都将其放回原处以获得结果。重新编写为函数声明/使用
函数
作为语句
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
};
}
关闭
()
,调用导入它的函数…仅供参考,这称为IIFE,立即调用的函数expression@PaulS. - 修好了,谢谢!谢谢,因为我是node.js的新手,你能提供我的内容的例子吗?谢谢!你能告诉我如何更好地导出start和pluginLoder吗?我的意思是,是否有更好的方法来编写它?我可以写3个导出,但不确定是否可以。。