432 Stimmen

Mehrere module.exports in Node.js deklarieren

Was ich versuche zu erreichen, ist es, ein Modul zu erstellen, das mehrere Funktionen darin enthält.

module.js:

module.exports = function(firstParam) { console.log("Du hast es geschafft"); },
module.exports = function(secondParam) { console.log("Ja, du hast es geschafft"); }, 
// Hier können mehr Funktionen enthalten sein

main.js:

var foo = require('module.js')(firstParam);
var bar = require('module.js')(secondParam);

Das Problem, das ich habe, ist, dass firstParam ein Objekttyp ist und secondParam ein URL-String ist, aber wenn ich das habe, beschwert es sich immer, dass der Typ falsch ist.

Wie kann ich in diesem Fall mehrere module.exports deklarieren?

870voto

mash Punkte 14501

Sie können so etwas tun:

module.exports = {
    method: function() {},
    otherMethod: function() {},
};

Oder einfach:

exports.method = function() {};
exports.otherMethod = function() {};

Dann im Aufrufskript:

const myModule = require('./myModule.js');
const method = myModule.method;
const otherMethod = myModule.otherMethod;
// ODER:
const {method, otherMethod} = require('./myModule.js');

232voto

Devorah Punkte 2390

Um mehrere Funktionen zu exportieren, können Sie sie einfach so auflisten:

module.exports = {
   function1,
   function2,
   function3
}

Und um sie in einer anderen Datei aufzurufen:

var myFunctions = require("./lib/file.js")

Und dann können Sie jede Funktion aufrufen, indem Sie:

myFunctions.function1
myFunctions.function2
myFunctions.function3

73voto

Fareed Alnamrouti Punkte 28431

Zusätzlich zu @mashs Antwort empfehle ich Ihnen auch, immer Folgendes zu tun:

const methode = () => {
   // Ihre Methodenlogik
}

const andereMethode = () => {
   // Ihre Methodenlogik
}

module.exports = {
    methode, 
    andereMethode,
    // anotherMethod
};

Beachten Sie hier:

  • Sie können methode von andereMethode aufrufen und dies werden Sie oft benötigen
  • Sie können eine Methode schnell als privat verstecken, wenn nötig
  • Dies ist einfacher für die meisten IDEs, um Ihren Code zu verstehen und automatisch zu vervollständigen ;)
  • Sie können auch die gleiche Technik für den Import verwenden:

    const {andereMethode} = require('./meinModul.js');

29voto

Anthony Awuley Punkte 2805

Module.js:

const foo = function() { ... }
const bar = function() { ... } 

// exportiere Module
module.exports = {
    foo,
    bar 
}

main.js:

// importiere Module
var { foo, bar } = require('module');

// übergebe deine Parameter
var f1 = foo();
var f2 = bar();

18voto

Ali Punkte 9387

Dies dient lediglich als Referenz, da das, was ich erreichen wollte, durch dies erreicht werden kann.

In der module.js

Wir können so etwas tun

    module.exports = function (erstesArg, zweitesArg ) {

    function ersteFunktion ( ) { ... }

    function zweiteFunktion ( ) { ... }

    function dritteFunktion ( ) { ... }

      return { ersteFunktion: ersteFunktion, zweiteFunktion: zweiteFunktion,
 dritteFunktion: dritteFunktion };

    }

In der main.js

var name = require('module')(erstesArg, zweitesArg);

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X