Module sind ein wesentlicher Bestandteil einer leistungsstarken Anwendung und helfen uns häufig, Codeeinheiten in Projekten klar zu trennen und zu organisieren.
Methoden zum Implementieren von Modulen in JS:
1. Objektliterale Darstellung
2.Modulemodus
3. AMD -Modul
4. CommonJS -Modul
5.Ecmascript Harmony Modul
Objekt wörtlich
Objektliterale müssen nicht mit dem neuen Operator instanziiert werden, können jedoch nicht zu Beginn einer Aussage verwendet werden, da der Anfang als Beginn eines Blocks interpretiert werden kann. Außerhalb des Objekts können das Objektliteral mit der folgenden Zuweisungsanweisung, MyModule.property = "seltsame", zum Objektliteral hinzugefügt werden.
var MyModule = {MyProperty: "seltsame", myconfig: {usecaching: true, Sprache: "en"}, // grundlegende Methode myMethod: function () {// ...}, // Ausgabeinformationen basierend auf der aktuellen Konfiguration myMethode2: function () {console.log ("caching is:"+("+(This "aktiviert": "deaktiviert"); }, // Schreiben Sie die aktuelle Konfiguration myMethod3: function (newConfig) {if (typeof newConfig === "Objekt") {this.myconfig = newConfig; console.log (this.myconfig.language); }},}; MYMODULE.MYMETHOD3 ({Sprache: "Fr", usecaching: false})Die Verwendung von Objektliteralen hilft bei der Einkapselung und Organisation von Code.
In JavaScript wird das Modulmuster verwendet, um das Konzept der Klassen weiter zu simulieren, wie ein separates Objekt öffentliche/private Methoden und Variablen haben kann, wodurch spezielle Teile aus dem globalen Bereich blockiert werden.
Das Modulmuster verwendet Verschlüsse, um den "privaten" Zustand und die Organisation "privat" zu verkapulieren. Es bietet eine Möglichkeit, eine Mischung aus öffentlichen/privaten Methoden und Variablen zu wickeln, um Lecks für den globalen Umfang zu verhindern, und in Konflikt mit den Schnittstellen anderer Entwickler. In diesem Modus müssen Sie nur eine öffentliche API zurückgeben, und alles andere wird in einer privaten Schließung gepflegt.
Im Modulmodus sind aufgrund der Existenz von Schließungen deklarierte Variablen und Methoden nur im Modus verfügbar. Variablen und Methoden, die im Rückkehrobjekt definiert sind, stehen externen Benutzern jedoch zur Verfügung.
Implementierung des Modulmodus
var testModule = (function () {var counter = 0; return {IncrementCounter: function () {return ++ counter;}, resetCounter: function () {console.log ("Gegenwert vor Reset" +counter); counter = 0;}}}) (); // Erhöhung des Gegenwerts und Reserve. testModule.resetcounter ();Der andere Teil des Codes ist, dass IncrementCounter () und ResetCounter () nicht direkt gelesen werden kann. Die Zählervariable ist tatsächlich vollständig aus dem globalen Bereich isoliert, so dass sie wie eine private Variable wirkt, deren Existenz auf die Schließung des Moduls beschränkt ist, da der einzige Code, der auf seinen Bereich zugreifen kann, diese beiden Funktionen sind. Die obige Methode hat den Namespace effektiv festgelegt, sodass im Testcode alle Aufrufe vorangestellt werden müssen.
// Modulmodus mit Namespace, öffentlichen und privaten Variablen var mynamspace = (function () {// private Countervariable var MyPrivateVar = 0; // Private Funktion var MyPrivatemethod = Funktion (foo) {console.log (foo);}; MyPublicfunction: Funktion (bar) {MyPrivateVar ++;Referenzglobale Variablen
JavaScript verfügt über eine Funktion namens Implicit Global Variablen. Unabhängig davon, ob eine Variable verwendet wurde oder nicht, kehrt der JavaScript -Interpreter die Bereichskette um, um die VAR -Deklaration der gesamten Variablen zu ermitteln. Wenn der VAR nicht gefunden wird, geht der Dolmetscher davon aus, dass die Variable eine globale Variable ist. Wenn die Variable für den Zuordnungsvorgang verwendet wird, erstellt der Interpreter sie automatisch. Dies bedeutet, dass es sehr einfach ist, globale Variablen in anonymen Schließungen zu verwenden oder zu erstellen, aber die schwierigere Sache ist, dass der Code schwer zu verwalten ist, insbesondere wenn Personen, die den Code lesen, viele unterscheiden, zwischen denen Variablen global und lokal sind.
Glücklicherweise können wir in anonymen Funktionen eine relativ einfache Alternative liefern. Wir können globale Variablen als Parameter in anonyme Funktionen übergeben und sie verwenden. Im Vergleich zu impliziten globalen Variablen ist es klar und schnell. Nehmen wir ein Beispiel:
// Global Modul var MyModule = (Funktion (jq, _) {Funktion privatemethod1 () {jq (". Container"). MYMODULE.PUBLICMETHOD (); // Global Modul var MyModule = (function () {// Modul -Objekt var module = {}; privateVarile = "hello"; function privatemethod () {//... }Module.publicProperty = "foobar";Deklarieren Sie globale Variablen, ohne sie zu implementieren, und kann auch das Konzept der globalen Einführung unterstützen
Im Modulmodus gibt es immer noch bestimmte Mängel:
1. Da wir unterschiedlich auf öffentliche und private Mitglieder zugreifen, müssen wir tatsächlich jede Existenz ändern, die dieses Mitglied jemals verwendet hat.
2. Wir können nicht auf diese privaten Mitglieder zugreifen, die der Methode später hinzugefügt wurden.
3.. Es können automatisierte Einheiten -Tests für private Mitglieder erstellt werden, und zusätzliche Komplexität wird hinzugefügt, wenn Fehler behoben werden müssen.
4. Entwickler können private Methoden nicht leicht verlängern
Das obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, es wird für das Lernen aller hilfreich sein und ich hoffe, jeder wird Wulin.com mehr unterstützen.