Obwohl ich die modulare Schreibmethode von commonJS in meiner Arbeit noch nicht verwendet habe, sehe ich immer noch häufig den Quellcode oder Artikel dieser Schreibmethode. Manchmal bin ich etwas verwirrt, wenn ich Exporte und module.exports sehe . . . Ich denke, Anfänger haben vielleicht die gleichen Fragen wie ich, und nach der Überprüfung gibt es wirklich viele davon. . Ich habe ein paar Artikel gelesen und ein Freund von Stackoverflow hat einen guten Artikel geschrieben, also habe ich ihn hier aufgezeichnet.
Tatsächlich ist es leicht zu unterscheiden, wenn man sich an dieses Bild erinnert und es versteht:
Dieses Bild zeigt die Beziehung zwischen den beiden in der Reihenfolge Um das Verständnis zu erleichtern, denke ich, dass es so erklärt werden kann: Wenn eine js-Datei modularisiert werden muss, fügt die Knotenumgebung die beiden Variablen exports und module.exports in die Datei ein, und zu Beginn verweisen diese beiden Variablen auf Beachten Sie, dass dies der Schlüssel ist, nachdem Sie eine Reihe von Operationen mit diesen beiden Variablen ausgeführt haben: Nur module.exports werden für die spätere Verwendung durch andere Module zurückgegeben, für die Referenzen erforderlich sind.
Hier erklären wir nur die Beziehung zwischen Operationen. Warum haben wir also zwei? Ja, warum ist es normal, wenn Sie es zuweisen und zurückgeben? Punkt der Exporte? . . . Haha, was ich verstehe ist, ja, Sie können immer module.exports verwenden und es wird nichts schief gehen, aber Sie müssen jedes Mal so schreiben:
module.exports.a = 1; module.exports.b = function() {}; module.exports.c = 'ccc';
Fühlen Sie sich müde? ? Dann steht es so:
exports.a = 1; exports.b = function() {}; exports.c = 'ccc';
Ist es nicht erfrischender, weil ich weniger geschrieben habe? . . Ich denke schon, hahaha, Programmierer sind extrem faul. Hier kommt also das Problem, verwenden Sie einfach Exports anstelle von module.exports, aber seien Sie vorsichtig, sonst machen Sie Fehler, zum Beispiel:
exports = function A() {}
Sie möchten eine Klasse exportieren Wenn Sie über das obige Bild nachdenken, wird module.exports zurückgegeben. Die Zuweisung unterbricht die Beziehung zwischen exports und module.exports. Was erhalten Sie also, wenn Sie es zitieren? . .
Was ist also die Schlussfolgerung?
Wenn die Dinge, die Sie exportieren möchten, direkt auf ein leeres Objekt erweitert werden können, wird die Verwendung von Exporten sicherlich Zeit und Mühe sparen
Wenn die Inhalte, die Sie exportieren möchten, das leere Objekt vollständig abdecken müssen, können Sie nur module.exports verwenden.
Bitte verwenden Sie module.exports, wenn Sie verwirrt sind. . .
Tatsächlich muss es nicht jedes Mal so mühsam sein, an dieses Bild und diesen Satz zu denken, und alles wird ganz natürlich verlaufen, oder? schreibe weniger Code. Lerne fleißig!!