Heim  >  Artikel  >  Web-Frontend  >  Detaillierte Erläuterung der Verwendung des JS-Modulmodus

Detaillierte Erläuterung der Verwendung des JS-Modulmodus

php中世界最好的语言
php中世界最好的语言Original
2018-04-17 09:47:081265Durchsuche

Dieses Mal werde ich Ihnen eine detaillierte Erklärung zur Verwendung des JS-Modulmodus geben. Was sind die Vorsichtsmaßnahmen, wenn Sie den JS-Modulmodus verwenden?

In JS gibt es kein Klassenkonzept. Wie spiegelt man also die öffentlichen und privaten Attribute von Objekt wider? Die Antwort ist das Modulmuster (Module Muster).

Es gibt eine wichtige Funktion in JS: Anonyme Funktion (anonym Durch die Erstellung und Ausführung anonymer Funktionen bildet der Code in der anonymen Funktion einen Abschluss und bildet, kapselt und kontrolliert so die privaten und öffentlichen Eigenschaften eines Objekts und vermeidet so die Verbreitung globaler Variablen und Konflikte mit anderen Skriptkonflikten.

(function () {
  // 所有的变量和函数只在这个范围内有效
  // 仍然可以使用全局变量
}());

Klassische Modulmustervorlage

var myNamespace = (function () {
 var myPrivateVar, myPrivateMethod;
 // A private counter variable
 myPrivateVar = 0;
 // A private function which logs any arguments
 myPrivateMethod = function( foo ) {
   console.log( foo );
 };
 return {
  // A public variable
  myPublicVar: "foo",
  // A public function utilizing privates
  myPublicFunction: function( bar ) {
   // Increment our private counter
   myPrivateVar++;
   // Call our private method using bar
   myPrivateMethod( bar );
  }
 };
})();

Durch den Abschluss können wir sehen, dass wir bei Verwendung von myNamespace nur die Eigenschaften und Methoden von myPublic* sehen können, auf die Eigenschaften und Methoden von myPrivate* jedoch nicht direkt zugegriffen werden kann.

Basismodus-Erweiterungen

Mixins importieren

JS verfügt über eine wichtige Funktion namens implizite globale Variablen. Dies bedeutet, dass der JS-Interpreter immer dann, wenn er nach einer var-Deklaration für eine Variable sucht und diese nicht findet, als globale Variable betrachtet wird. Dies scheint bei der Verwendung globaler Variablen in Abschlüssen eine einfache Sache zu sein, kann aber gleichzeitig leicht zu Verwirrung im Code führen. Glücklicherweise können anonyme Funktionen auch Parameter empfangen, sodass wir durch Parameterübergabe die globalen Variablen, die wir verwenden möchten, in die anonyme Funktion importieren können, wodurch eine klarere und sauberere Verwendungsmethode bereitgestellt wird.

(function ($, YAHOO) {
  // 这样就可以访问jQuery (as $) 和 YAHOO 库
}(jQuery, YAHOO));

Modulexporte

Manchmal verwenden Sie nicht nur globale Variablen, sondern möchten auch eine eigene globale Variable deklarieren. Dies kann einfach über den Rückgabewert einer anonymen Funktion erreicht werden.

var MODULE = (function () {
  var my = {},
    privateVariable = 1;
  function privateMethod() {
    // ...
  }
  my.moduleProperty = 1;
  my.moduleMethod = function () {
    // ...
  };
  return my;
}());

Erweiterte Erweiterungen

Basierend auf dem oben genannten Grundmuster können wir weiter expandieren.

Augmentation

Die Einschränkung des Basismodulmodus besteht darin, dass wir das gesamte Modul in einer Datei ablegen müssen. Was sollten wir also tun, wenn wir ein Modul auf mehrere Dateien verteilen müssen?

Eine Möglichkeit besteht darin, Module zu erweitern. Wir geben zuerst das Modul ein, fügen dann Attributmethoden hinzu und geben dann aus. Beispiele sind wie folgt

var MODULE = (function (my) {
  my.anotherMethod = function () {
    // added method...
  };
  return my;
}(MODULE));

Lose Augmentation

Das obige Beispiel erfordert zunächst ein Modul und fügt dann darauf basierend neue Funktionen hinzu. Aber manchmal laden wir JS-Skripte asynchron, daher benötigen wir eine Methode zur Modulerstellung mit geringer Kopplung, die durch die folgende Struktur erreicht werden kann.

var MODULE = (function (my) {
  // add capabilities...
  return my;
}(MODULE || {}));

Untermodule

Untermodule können basierend auf dem Modul erstellt werden. Das Beispiel ist wie folgt:

MODULE.sub = (function () {
  var my = {};
  // ...
  return my;
}());

Bisher haben wir kurz den Modulmodus vorgestellt, der der klassischste JS-Modus ist und von verschiedenen JS-Frameworks häufig verwendet wird. Dadurch wird Ihr Code gekapselter, strukturierter und OOP-fähiger.

Ich glaube, dass Sie die Methode beherrschen, nachdem Sie den Fall in diesem Artikel gelesen haben. Weitere spannende Informationen finden Sie in anderen verwandten Artikeln auf der chinesischen PHP-Website!

Empfohlene Lektüre:

So bedienen Sie die Vue-Ladesequenz

So stellen Sie den BootStrap-Header ein, um sich kreuzende Zeilen zu verhindern

Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der Verwendung des JS-Modulmodus. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn