Dieser Artikel ist ein Spiegelartikel der maschinellen Übersetzung, bitte klicken Sie hier, um zum Originalartikel zu springen.

Ansehen: 9631|Antwort: 0

[JavaScript] rehore()-Anweisung AMD-Spezifikation

[Link kopieren]
Veröffentlicht am 13.02.2019 14:01:09 | | |
Dieser Beitrag wurde zuletzt von Summer am 13.2.2019 um 14:04 Uhr bearbeitet

Im Jahr 2009 entwickelte der amerikanische Programmierer Ryan Dahl node.js Projekt, um die JavaScript-Sprache für serverseitige Programmierung zu verwenden.

Dies markiert die Geburt der "Javascript-modularen Programmierung". Die Komplexität des Frontends ist begrenzt, und es ist in Ordnung, keine Module zu haben, aber auf der Serverseite müssen Module vorhanden sein, um mit dem Betriebssystem und anderen Anwendungen zu interagieren, sonst kann es überhaupt nicht programmiert werden.

Eine der wichtigsten Ideen in der Node-Programmierung sind Module, und genau diese Idee macht die großflächige Entwicklung von JavaScript möglich. Modulare Programmierung war in der JS-Welt beliebt und basierte darauf, und dann erschienen auf der Browserseite auch Toolkits wie requirejs und seajs, sozusagen unter der entsprechenden Spezifikation, die alle modularen Programmierungen vor ES6 regelten, sogar jetzt, bevor das ES6-Modul vollständig implementiert war.

In CommonJS verwendet das Exposure-Modul module.exports und exports, und viele verstehen nicht, warum es zwei offengelegte Objekte gibt, die später eingeführt werden

In CommonJS gibt es eine globale Methode requirre(), die zum Laden von Modulen verwendet wird. Vorausgesetzt, es gibt ein Mathematikmodul math.js, kann es so geladen werden.



Du kannst dann die vom Modul bereitgestellten Methoden aufrufen:

Gerade wegen der von CommonJS verwendeten Demande-Methode wurde die später von AMD und CMD verwendete Neede-Methode auch verwendet, um den Modulstil zu bezeichnen

AMD-Spezifikation

Bei serverseitigen Modulen ist es natürlich, dass jeder clientseitige Module möchte. Und es ist am besten, wenn beide kompatibel sind und ein Modul sowohl auf dem Server als auch auf dem Browser ohne Änderungen ausgeführt werden kann.

Es gibt jedoch eine wesentliche Einschränkung, die die CommonJS-Spezifikation auf Browserumgebungen nicht anwendbar macht. Dennoch gibt es ein großes Problem mit dem Code aus dem vorherigen Abschnitt, wenn er im Browser läuft.



Die zweite Zeile math.add(2, 3) läuft nach der ersten Zeile requirre('math'), sodass sie warten muss, bis math.js Laden fertig ist. Das heißt, wenn die Ladezeit lang ist, bleibt die ganze App dort stehen und wartet.

Dies ist auf Serverseite kein Problem, da alle Module auf der lokalen Festplatte gespeichert und synchron geladen werden können, und die Wartezeit ist die Lesezeit der Festplatte. Bei Browsern ist dies jedoch ein großes Problem, da die Module auf der Serverseite platziert sind und die Wartezeit von der Internetgeschwindigkeit abhängt, die lange dauern kann, und der Browser befindet sich in einem "suspendierten Tod"-Zustand.


Daher können browserseitige Module "synchron" nicht verwenden, sondern nur "asynchron". Dies ist der Hintergrund für die Entstehung der AMD-Spezifikation.

AMD ist eine Abkürzung für "Asynchronous Module Definition", was "Asynchronous Module Definition" bedeutet. Es lädt das Modul asynchron, und das Laden des Moduls beeinflusst nicht die Funktion seiner nachfolgenden Anweisungen. Alle Anweisungen, die von diesem Modul abhängen, sind in einer Callback-Funktion definiert, die erst ausgeführt wird, wenn das Laden abgeschlossen ist.

Module müssen mit einer bestimmten define()-Funktion definiert werden.


•ID: Zeichenkette, Modulname (optional)
•Abhängigkeiten: ist das abhängige Modul, das wir laden möchten (optional), wobei wir den relativen Pfad verwenden. , beachten Sie, dass es sich um ein Array-Format handelt
•factory: factory-Methode, gibt eine Modulfunktion zurück
Wenn ein Modul nicht von anderen Moduln abhängt, kann er direkt in der define()-Funktion definiert werden.


Wenn das Modul auch von anderen Moduln abhängt, muss das erste Argument der define()-Funktion ein Array sein, das die Abhängigkeiten des Moduls anzeigt.



Wenn die Funktion require() das obige Modul lädt, lädt sie zuerst Lib.js Datei.

AMD verwendet ebenfalls die require()-Anweisung, um das Modul zu laden, aber im Gegensatz zu CommonJS benötigt sie zwei Parameter:

Der erste Parameter [Modul] ist ein Array, und die darin enthaltenen Mitglieder sind die zu ladenden Module; Der zweite Parameter-Callback ist die Callback-Funktion nach dem erfolgreichen Load. Wenn man den vorherigen Code in AMD-Form umschreibt, sieht er so aus:


math.add() ist nicht mit dem Laden des Mathematikmoduls synchronisiert, und der Browser setzt die Animation nicht aus. Offensichtlich ist AMD also besser für die Browserumgebung geeignet.

Derzeit gibt es zwei Haupt-Javascript-Bibliotheken, die die AMD-Spezifikation :require.js und curl.js implementieren.







Vorhergehend:init: function (){}方法的写法原因
Nächster:【Praktischer Kampf】Kibana 6.5.2 Chinesisches Chinesisch-Tutorial
Verzichtserklärung:
Alle von Code Farmer Network veröffentlichten Software, Programmiermaterialien oder Artikel dienen ausschließlich Lern- und Forschungszwecken; Die oben genannten Inhalte dürfen nicht für kommerzielle oder illegale Zwecke verwendet werden, andernfalls tragen die Nutzer alle Konsequenzen. Die Informationen auf dieser Seite stammen aus dem Internet, und Urheberrechtsstreitigkeiten haben nichts mit dieser Seite zu tun. Sie müssen die oben genannten Inhalte innerhalb von 24 Stunden nach dem Download vollständig von Ihrem Computer löschen. Wenn Ihnen das Programm gefällt, unterstützen Sie bitte echte Software, kaufen Sie die Registrierung und erhalten Sie bessere echte Dienstleistungen. Falls es eine Verletzung gibt, kontaktieren Sie uns bitte per E-Mail.

Mail To:help@itsvse.com