2016-05-15 11 views
0

Im mit dem folgenden Code und seine adaequat ersetzen, ist dies der server.jsWie die IIFE in Exportfunktion

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

dies ist das Modul, das 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 
    } 
}(); 

Dieses Modul Export .exports Verwendung () IIFE (am Ende des Exports), damit es funktioniert, und ich möchte es vermeiden, gibt es eine sauberere Möglichkeit, das ohne die Klammern am Ende zu tun?

+0

nehmen die '()' off, Call-Funktion, wo Sie es importieren ... – JordanHendrix

+0

FYI ist dies ein _IIFE_ genannt, sofort aufgerufen Funktionsausdruck –

+0

@PaulS. - Fest, danke! –

Antwort

1

Re-geschrieben als Funktion Erklärung/Verwendung function als Aussage

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 
    }; 
} 
+0

Danke! kannst du bitte zeigen, wie es besser ist, auch den start und pluginLoder zu exportieren? –

+0

Ich meine, wenn es einen besseren Weg gibt, es zu schreiben? Ich kann 3 Exporte schreiben aber nicht sicher, ob es ok ist .. –

1

nehmen Sie die () aus, rufen Sie die Funktion, wo Sie es importieren .:

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

wo jeder Import/erfordern die Funktion, die auf zurücklegen das Ergebnis zu erhalten.

+0

Danke, seit ich neu zu node.js kann Sie bitte Beispiel mit meinen Inhalten bereitstellen? –

+0

Danke, aber es funktioniert nicht für mich ... keine Ahnung? –

Verwandte Themen