Ich versuche, ein Modul zu erstellen, das mehrere Funktionen enthält.
module.js:
module.exports = function(firstParam) { console.log("You did it"); },
module.exports = function(secondParam) { console.log("Yes you did it"); },
// This may contain more functions
main.js:
var foo = require('module.js')(firstParam);
var bar = require('module.js')(secondParam);
Das Problem, das ich habe, ist, dass das firstParam
ein Objekttyp und das secondParam
eine URL-Zeichenfolge 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?
Antworten:
Sie können so etwas tun wie:
Oder nur:
Dann im aufrufenden Skript:
quelle
module.exports = {}
und nichtmodule.method = ...
. stackoverflow.com/a/26451885/155740module.method
hier nirgendwo ... nurexports.method
, was nur ein Hinweis istmodule.exports.method
, verhält sich also genauso. Der einzige Unterschied ist, dass wir nicht definiert habenmodule.exports
, daher wird standardmäßig verwendet{}
, es sei denn, ich irre mich.var otherMethod = require('module.js')(otherMethod);
? Dh, würde diese Zeile dieotherMethod
Funktion erfordern, als wäre sie die einzige Funktion auf der Seite und der Export wäre :module.exports = secondMethod;
?var otherMethod = require('module.js').otherMethod
.Um mehrere Funktionen zu exportieren, können Sie sie einfach wie folgt auflisten:
Und dann, um in einer anderen Datei darauf zuzugreifen:
Und dann können Sie jede Funktion aufrufen, indem Sie Folgendes aufrufen:
quelle
require("./lib/file.js")
? Ich muss verwendenrequire("../../lib/file.js")
, sonst funktioniert es nicht.const { function1, function2, function3 } = require("./lib/file.js")
function1
myFunctions.function1
Zusätzlich zu @mash answer empfehle ich Ihnen, immer Folgendes zu tun:
Beachten Sie hier:
method
ausotherMethod
und Sie werden diese viel brauchenSie können dieselbe Technik auch für den Import verwenden:
const {otherMethod} = require('./myModule.js');
quelle
Dies ist nur als Referenz, da das, was ich erreichen wollte, dadurch erreicht werden kann.
In dem
module.js
Wir können so etwas tun
In dem
main.js
quelle
module.js:
main.js:
quelle
Eine Möglichkeit, dies zu tun, besteht darin, ein neues Objekt im Modul zu erstellen, anstatt es zu ersetzen.
beispielsweise:
und anzurufen
quelle
Wenn die Dateien mit dem ES6-Export geschrieben wurden, können Sie Folgendes schreiben:
quelle
Sie können eine Funktion schreiben, die manuell zwischen den anderen Funktionen delegiert:
quelle
benutze das
quelle
Import und Export von Modulen mit zwei Typen.
Typ 1 (module.js):
Typ 1 (main.js):
Typ 2 (module.js):
Typ 2 (main.js):
Wie verwende ich das Importmodul?
quelle
Sie können es auch so exportieren
oder für anonyme Funktionen wie diese
quelle
module1.js:
main.js
quelle
Es gibt mehrere Möglichkeiten, dies zu tun. Eine Möglichkeit wird unten erwähnt. Nehmen Sie einfach an, Sie haben eine solche .js-Datei.
Sie können diese Funktionen mit dem folgenden Codeausschnitt exportieren:
Und Sie können die exportierten Funktionen mit diesem Code-Snippet verwenden.
Ich weiß, dass dies eine späte Antwort ist, aber ich hoffe, das hilft!
quelle
quelle
Wenn Sie eine Klasse in einer Moduldatei anstelle des einfachen Objekts deklarieren
Datei: UserModule.js
Hauptdatei: index.js
quelle
Sie können diesen Ansatz auch verwenden
oder
quelle
Hier hinzufügen, damit jemand hilft:
Dieser Codeblock hilft beim Hinzufügen mehrerer Plugins zu cypress index.js Plugins -> Auswahl der Datei cypress-ntlm-auth und cypress env
quelle