Modulare Programmierung unterteilt große Anwendungen in kleinere, einfach zu verwaltende Codeblöcke. Die modulbasierte Codierung vereinfacht die Wartung und verbessert die Wiederverwendbarkeit des Codes. Die Abhängigkeiten zwischen Managementmodulen sind jedoch ein großes Problem, mit dem Entwickler während des gesamten Anwendungsentwicklungsprozesses konfrontiert sind. RequestJS ist eines der beliebtesten Frameworks für die Verwaltung von Abhängigkeiten zwischen Modulen. In diesem Tutorial wird die Anforderungen des modularen Code untersucht und zeigt, wie ReformenJs helfen kann.
Schlüsselpunkte
- fordertJS ist ein beliebtes Framework für die Verwaltung von Abhängigkeiten zwischen JavaScript -Modulen, die die Geschwindigkeit und Qualität Ihres Codes, insbesondere in großen Projekten, verbessert.
- fordertJS verwendet das Laden von asynchronem Modul (AMD) zum Laden von Dateien, mit denen Skripte Module und deren Abhängigkeiten auf nicht blockierende Weise laden können.
- In Anforderung ist der gesamte Code in
require()
oder define()
-Funktionen eingewickelt. Die require()
-Funktion wird für Funktionen verwendet, die sofort ausgeführt werden, während die define()
-Funktion verwendet wird, um Module zu definieren, die an mehreren Stellen verwendet werden können.
- fordertJs verbessert die Codequalität, indem sie die Modularität und die Trennung von Bedenken fördert, das Risiko reduziert, Konflikte zu benennen, indem der globale Geltungsbereich ordentlich gehalten wird und einen leistungsstarken Mechanismus zur Fehlerbehandlung bietet.
Laden Sie die JavaScript -Datei
Große Anwendungen erfordern normalerweise viele JavaScript -Dateien. Normalerweise verwenden sie
<p>
<code>credits.js
Hier erfolgt die Initialisierung vor dem Laden
. Dies führt zu einem Fehler, wie unten gezeigt. In diesem Beispiel sind nur drei JavaScript -Dateien erforderlich. In einem größeren Projekt können die Dinge leicht außer Kontrolle geraten. Hier kommt RefordyJs ins Spiel.
fordertJS Einführung
fordertJs ist ein bekanntes JavaScript-Modul und einen Dateiload, der von den neuesten Versionen beliebter Browser unterstützt wird. In RequestJs trennen wir den Code in Module, von denen jede eine einzige Verantwortung übernimmt. Zusätzlich müssen Abhängigkeiten beim Laden der Datei konfiguriert werden. Beginnen wir mit dem Herunterladen von Anforderungen. Kopieren Sie nach Abschluss des Downloads die Datei in Ihren Projektordner. Nehmen wir an, dass die Verzeichnisstruktur des Projekts nun der folgenden Abbildung ähnelt:
scripts
main.js
<script> 标签逐个加载。此外,每个文件都可能依赖于其他文件。最常见的例子是 jQuery 插件,它们都依赖于核心 jQuery 库。因此,必须在加载任何 jQuery 插件之前加载 jQuery。让我们来看一个在实际应用程序中加载 JavaScript 文件的简单示例。假设我们有以下三个 JavaScript 文件:
<p><code>purchase.js
<pre class='brush:php;toolbar:false;'>function purchaseProduct(){
console.log("Function : purchaseProduct");
var credits = getCredits();
if(credits > 0){
reserveProduct();
return true;
}
return false;
}</pre>
<p><code>products.js
<pre class='brush:php;toolbar:false;'>function reserveProduct(){
console.log("Function : reserveProduct");
return true;
}</pre>
<p><code>credits.js
<pre class='brush:php;toolbar:false;'>function getCredits(){
console.log("Function : getCredits");
var credits = "100";
return credits;
}</pre>
<p>在这个例子中,我们试图购买一个产品。首先,它检查是否有足够的积分可以购买产品。然后,在验证积分后,它预订产品。另一个脚本 <code>main.js 通过调用 <code>purchaseProduct() 来初始化代码,如下所示:
<pre class='brush:php;toolbar:false;'>var result = purchaseProduct();</pre>
<p><strong>可能出错的地方?
<p>在这个例子中,<code>purchase.js 依赖于 <code>credits.js 和 <code>products.js。因此,在调用 <code>purchaseProduct() 之前需要加载这些文件。那么,如果我们按以下顺序包含 JavaScript 文件会发生什么情况呢?
<pre class='brush:php;toolbar:false;'><script src="products.js"></script> Alle JavaScript -Dateien (einschließlich Anforderungsdateien) befinden sich im Ordner <script src="purchase.js"></script>. <script src="main.js"></script> Dateien werden für die Initialisierung verwendet, und andere Dateien enthalten Anwendungslogik. Lassen Sie uns sehen, wie Skripte in HTML -Dateien einbezogen werden. <script src="credits.js"></script><pre class="brush:php;toolbar:false"><code class="language-html"><🎜></pre>
<p> Dies ist der einzige Code, den Sie die Datei mit RequiredJs einfügen müssen. Sie fragen sich vielleicht, was mit anderen Dateien los ist und wie sie enthalten sind. Das Attribut <code>data-main definiert den Initialisierungspunkt der Anwendung. In diesem Fall ist es <code>main.js. RequiredJS verwendet <code>main.js, um andere Skripte und Abhängigkeiten zu finden. In diesem Fall befinden sich alle Dateien im selben Ordner. Mit Logic können Sie Dateien in einen beliebigen Ordner verschieben. Schauen wir uns nun einen Blick auf <code>main.js an.
<pre class='brush:php;toolbar:false;'>require(["purchase"],function(purchase){
purchase.purchaseProduct();
});</pre>
<p> In Anforderung ist der gesamte Code in <code>require() oder <code>define() -Funktionen eingewickelt. Das erste Argument dieser Funktionen gibt die Abhängigkeit an. Im vorherigen Beispiel hängt die Initialisierung von <code>purchase.js ab, da sie <code>purchaseProduct() definiert. Bitte beachten Sie, dass die Dateierweiterung weggelassen wurde. Dies liegt daran, dass Anforderung nur <code>.js Dateien berücksichtigt. Das zweite Argument für <code>require() ist eine anonyme Funktion, die ein Objekt akzeptiert, das die in der abhängigen Datei enthaltenen Funktionen aufruft. In diesem Fall haben wir nur eine Abhängigkeit. Mehrere Abhängigkeiten können mit der folgenden Syntax geladen werden:
<pre class='brush:php;toolbar:false;'>require(["a","b","c"],function(a,b,c){
});</pre>
<p> <strong> Erstellen Sie eine Anwendung mit RequiredJS
<p> In diesem Abschnitt werden wir das im vorherige Abschnitt erörterte reine JavaScript -Beispiel in fordernjs konvertieren. Wir haben <code>main.js behandelt, also gehen wir weiter, um andere Dokumente zu besprechen. <code>purchase.js
<pre class='brush:php;toolbar:false;'>define(["credits","products"], function(credits,products) {
console.log("Function : purchaseProduct");
return {
purchaseProduct: function() {
var credit = credits.getCredits();
if(credit > 0){
products.reserveProduct();
return true;
}
return false;
}
}
});</pre>
<p> Erstens erklären wir, dass die Kauffunktion von <code>credits und <code>products abhängt. In der Aussage <code>return können wir die Funktionen jedes Moduls definieren. Hier haben wir die Funktionen <code>getCredits() und <code>reserveProduct() auf dem übergebenen Objekt bezeichnet. <code>product.js ähnelt <code>credits.js, wie unten gezeigt. <code>products.js
<pre class='brush:php;toolbar:false;'>define(function(products) {
return {
reserveProduct: function() {
console.log("Function : reserveProduct");
return true;
}
}
});</pre>
<p> <code>credits.js
<pre class='brush:php;toolbar:false;'>define(function() {
console.log("Function : getCredits");
return {
getCredits: function() {
var credits = "100";
return credits;
}
}
});</pre>
<p> Beide Dateien sind als eigenständige Module konfiguriert - was bedeutet, dass sie nicht von irgendetwas abhängen. Das Wichtigste ist, dass <code>define() anstelle von <code>require() verwendet wird. Die Auswahl von <code>require() oder <code>define() hängt von der Struktur des Codes ab und wird im nächsten Abschnitt erörtert.
<p> <strong> Verwenden Sie <code>require() mit <code>define()
Ich habe bereits erwähnt, dass wir <p> und <code>require() verwenden können, um Abhängigkeiten zu laden. Das Verständnis des Unterschieds zwischen diesen beiden Funktionen ist für die Verwaltung von Abhängigkeiten von wesentlicher Bedeutung. Die <code>define() -Funktion wird verwendet, um die Funktion sofort auszuführen, während die <code>require() -Funktion verwendet wird, um Module zu definieren, die an mehreren Stellen verwendet werden können. In unserem Beispiel müssen wir die <code>define() -Funktion sofort ausführen. Daher wird <code>purchaseProduct() in <code>require() verwendet. Andere Dateien sind jedoch wiederverwendbare Module, verwenden Sie also <code>main.js. <code>define()
<p> Warum ReforntureJs so wichtig ist <strong> <p> In reinen JavaScript -Beispielen wird ein Fehler aufgrund der falschen Ladereihenfolge von Dateien generiert. Löschen Sie nun die Datei <code>credits.js im Beispiel für Anforderung und sehen Sie, wie sie funktioniert. Die folgende Abbildung zeigt die Ausgabe des Browser -Check -Tools.
<p> <img src="/static/imghwm/default1.png" data-src="https://img.php.cn/upload/article/000/000/000/174036404874237.jpg?x-oss-process=image/resize,p_40" class="lazy" alt="Understanding RequireJS for Effective JavaScript Module Loading " />
<p> Der Unterschied besteht darin, dass in dem Beispiel für Anforderungskörper kein Code ausgeführt wird. Wir können dies bestätigen, weil auf der Konsole nichts gedruckt wird. Im Beispiel des reinen JavaScript -Beispiels drucken wir eine Ausgabe auf der Konsole, bevor wir den Fehler generieren. RequiredJS wartet, bevor er alle abhängigen Module laden, bevor die Funktion ausgeführt wird. Wenn ein Modul verloren geht, wird kein Code ausgeführt. Dies hilft uns, die Integrität unserer Daten aufrechtzuerhalten.
<p> <strong> Sequenz der Verwaltung von Abhängigkeitsdateien
<p> fordertJS verwendet das Laden von asynchronem Modul (AMD) zum Laden von Dateien. Jedes abhängige Modul beginnt in der angegebenen Reihenfolge mit asynchronen Anforderungen. Selbst mit der Dateibestellung können wir nicht garantieren, dass die erste Datei aufgrund der asynchronen Natur vor der zweiten Datei geladen wird. Daher ermöglicht uns bei ReformenJs die Shim -Konfiguration, um die Abfolge von Dateien zu definieren, die in der richtigen Reihenfolge geladen werden müssen. Sehen wir uns an, wie Sie Konfigurationsoptionen in RequestJs erstellen.
<pre class='brush:php;toolbar:false;'><🎜></pre>
<p> fordertJs ermöglicht es uns, Konfigurationsoptionen mithilfe der Funktion <code>config() bereitzustellen. Es akzeptiert einen Parameter mit dem Namen <code>shim, mit dem wir eine obligatorische Abhängigkeit von Abhängigkeiten definieren können. Sie finden eine vollständige Konfigurationshandbuch in der Dokumentation von RequiredJS -API.
<pre class='brush:php;toolbar:false;'>require(["purchase"],function(purchase){
purchase.purchaseProduct();
});</pre>
<p> Unter normalen Umständen werden diese vier Dateien in der angegebenen Reihenfolge geladen. Hier hängt <code>source2 von <code>source1 ab. Sobald <code>source1 geladen ist, wird <code>source2 alle Abhängigkeiten geladen. <code>dependency1 und <code>dependency2 können jedoch weiterhin geladen werden. Unter Verwendung der Shim -Konfiguration müssen Abhängigkeiten vor <code>source1 geladen werden. Daher wird kein Fehler erzeugt.
<p> <strong> Schlussfolgerung
<p> Ich hoffe, dieses Tutorial hilft Ihnen beim Einstieg mit Reformenjs. Obwohl es einfach aussieht, ist es wirklich leistungsfähig, Abhängigkeiten in großen JavaScript -Anwendungen zu verwalten. Allein dieses Tutorial reicht nicht aus, um alle Aspekte von Anforderungen zu behandeln. Ich hoffe, Sie können alle erweiterten Konfigurationen und Techniken mithilfe der offiziellen Website lernen.
<p> <strong> (Folgendes ist eine pseudooriginale Erstellung des FAQs-Teils im Originaltext, bei der die ursprüngliche Bedeutung aufrechterhalten und die Sätze angepasst und neu geschrieben)
<p> <strong> FAQs über das Lademodul des JavaScript -Moduls mit RequiredJS
<p> <strong> Was wird die Hauptanforderungen in JavaScript verwendet? <p> fordertJS ist eine JavaScript -Datei und einen Modulloader, der für die Verwendung von Browser optimiert ist, aber auch für andere JavaScript -Umgebungen geeignet ist. Der Hauptzweck für die Verwendung von RequiredJs besteht darin, die Geschwindigkeit und Qualität Ihres Codes zu verbessern. Sie können Abhängigkeiten zwischen Codemodulen und Skripten effizient verwalten. Dies ist besonders in großen Projekten nützlich, bei denen einzelne Skripte komplex werden können. RequestJs hält auch den globalen Bereich sauber, indem er die Verwendung globaler Variablen verringert.
<p> <strong> Wie kann man mit Abhängigkeiten umgehen?
<p> fordertJs behandelt Abhängigkeiten über einen Mechanismus, der als AMD (Asynchronous Modul Definition) bezeichnet wird. Dadurch kann das Skript nicht blockierende Module und ihre Abhängigkeiten laden. Wenn Sie ein Modul definieren, geben Sie seine Abhängigkeiten an und stellt sicher, dass diese Abhängigkeiten vor dem Modul selbst geladen werden. Auf diese Weise können Sie sicherstellen, dass bei der Ausführung des Moduls alle erforderlichen Code verfügbar sind.
<p> <strong> Kann Js mit node.js benötigt werden?
<p> Ja, RequiredJs können mit node.js verwendet werden, obwohl es häufiger in Browsern verwendet wird. Bei Verwendung mit node.js können Sie mit BedarfJS den serverseitigen JavaScript-Code in Module organisieren, genau wie in Ihrem Browser. Node.js verfügt jedoch über ein eigenes Modulsystem (CommonJS), sodass die Verwendung von RequestJS weniger häufig ist.
<p> <strong> Wie verbessert man die Codequalität?
<p> fordertJs verbessert die Codequalität, indem sie die Modularität und die Trennung von Bedenken fördert. Durch das Organisieren des Code in Module, jeweils mit seiner spezifischen Funktionalität, können Sie Code schreiben, der leichter zu warten und zu testen ist. Es verringert auch das Risiko, Konflikte zu benennen, indem der globale Bereich ordentlich bleibt.
<p> <strong> Was ist der Unterschied zwischen Anforderungen und CommonJs?
<p> fordertJs und CommonJs sind beide JavaScript -Modulsysteme, aber sie haben einige wichtige Unterschiede. RequiredJS verwendet das AMD -Format (Asynchronous Modul Definition), mit dem Module und deren Abhängigkeiten asynchron im Browser geladen werden. Andererseits synchronisiert CommonJs, die von Node.js verwendet werden.
<p> <strong> Wie definieren Sie Module in forderjs?
<p> In RequiredJs können Sie die Funktion <code>define verwenden, um Module zu definieren. Diese Funktion erfordert zwei Parameter: ein Abhängigkeitsarray und eine Fabrikfunktion. Sobald alle Abhängigkeiten geladen sind, wird die Fabrikfunktion aufgerufen und der Wert des Moduls sollte zurückgegeben werden.
<p> <strong> Wie lädt man Module in RefordeJs?
<p> Um ein Modul in fordernJs zu laden, können Sie die Funktion <code>require verwenden. Diese Funktion akzeptiert zwei Parameter: ein Abhängigkeitsarray und eine Rückruffunktion. Sobald alle Abhängigkeiten geladen sind, wird die Rückruffunktion aufgerufen.
<p> <strong> Kann ich RequiredJs mit anderen JavaScript -Bibliotheken verwenden?
<p> Ja, RequiredJs können mit anderen JavaScript -Bibliotheken wie JQuery, Backbone und Angular verwendet werden. Es kann diese Bibliotheken als Module laden und ihre Abhängigkeiten verwalten.
<p> <strong> Wie kann ich Fehler umgehen? <p> fordertJs hat einen leistungsstarken Fehlerbehandlungsmechanismus. Wenn das Skript nicht geladen werden kann, löst RequiredJS ein Fehlerereignis aus. Sie können auf dieses Ereignis zuhören und Fehler in Ihrem Code angemessen behandeln.
<p> <strong> Kann ich RequiredJs für die Produktion verwenden?
<p> Ja, RequiredJs eignet sich für Entwicklungs- und Produktionsumgebungen. Für Produktionsumgebungen bietet RequestJS ein Optimierungstool, das Ihre JavaScript -Dateien kombiniert und komprimiert, um die Ladezeit zu verbessern. </script>
Das obige ist der detaillierte Inhalt vonVerständnis für das effektive JavaScript -Modul Laden. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!