Inhaltsverzeichnis
1. CommonJS
Der Unterschied zwischen Exporten und module.exports
Apropos AMD, ich muss sagen
Die CMD-Spezifikation wurde vom berühmten Yu Bo in China vorgeschlagen. Das Einzige, was zu tun ist, ist
4. Zusammenfassung
Heim Web-Frontend js-Tutorial Lernen Sie die Modulspezifikationen von Knoten (1) von 0 bis 1 kennen

Lernen Sie die Modulspezifikationen von Knoten (1) von 0 bis 1 kennen

Jan 24, 2017 pm 03:30 PM
node 模块

Bevor wir die Konzepte von CommonJS, AMD und CMD erklären, verstehen wir zunächst die Modularität von js. Modularisierung besteht, wie der Name schon sagt, darin, das Projekt nach Funktionen oder anderer Logik zu zerlegen. Jeder Teil verarbeitet nur eine Funktion, um die Funktionen zu entkoppeln und die zukünftige Entwicklung und Wartung zu erleichtern. Dann muss die Modularisierung über die folgenden Funktionen zum Teilen und Zusammensetzen von Modulen verfügen:

  1. Definieren Sie gekapselte Module;

  2. Definieren Sie die Abhängigkeit des neuen Moduls auf anderen Modulen;

  3. kann die Einführung anderer Module unterstützen

Dann wird eine Reihe von Spezifikationen benötigt Um diese Fähigkeiten zu definieren, erschienen CommonJS, AMD, CMD usw.

1. CommonJS

CommonJS hieß ursprünglich ServerJS, was die Spezifikation von js auf der Serverseite ist. Gemäß der CommonJS-Spezifikation ist eine einzelne Datei ein Modul, require wird zum Laden eines Moduls verwendet und exports wird verwendet, um Methoden oder Eigenschaften im Modul nach außen zugänglich zu machen.

Zum Beispiel:

// hello.jsfunction say(username){    console.log( 'hello, '+username );
}

exports.say = say;
Nach dem Login kopieren

=============

// main.jsvar person = require('./hello');

person.say('wenzi'); // hello, wenziperson.say('师少兵'); // hello, 师少兵person.say('NUC'); // hello, NUC
Nach dem Login kopieren

Gleichzeitig kann die require-Anweisung an einer beliebigen Stelle in der Datei geschrieben werden, solange sie vor der Referenz verwendet wird, muss sie nicht am Anfang der Datei geschrieben werden. Um den Code jedoch leichter lesbar zu machen und intuitiv zu erkennen, auf welche Module derzeit verwiesen wird, platzieren Sie ihn am besten an den Anfang der Datei.

Der Unterschied zwischen Exporten und module.exports

Einige Leute haben möglicherweise gesehen, dass Exporte direkt verwendet werden, andere wiederum, dass sie module.exports verwenden. Hier ist eine kurze Erklärung des Unterschieds zwischen den beiden.

Nehmen wir ein einfaches Beispiel:

var a = {name:'wenzi'};var b = a;console.log(a); // {name: "wenzi"}console.log(b); // {name: "wenzi"}
Nach dem Login kopieren

Die Ausgabeergebnisse von a und b sind gleich. Jetzt ändere ich den Wert von name in b:

b.name = 'shaobing';console.log(a); // {name: "shaobing"}console.log(b); // {name: "shaobing"}
Nach dem Login kopieren

Die Ausgabeergebnisse von a und b haben sich geändert. Ich deklariere b neu:

var b = {name:'师少兵'};console.log(a); // {name: "shaobing"}console.log(b); // {name: "师少兵"}
Nach dem Login kopieren

Diese drei Beispiele geben drei Ergebnisse aus:

  1. deklariere ein Objekt und weise a zu b zu, und dann a und b geben das gleiche Ergebnis aus;

  2. ändert den Namen in b, dann ändert sich auch der Name in a

  3. Deklariert das b-Objekt neu , dann ändert sich der Name in a nicht mit b
Erklärung

: a ist ein Objekt, b ist Die Referenz auf a, also auf a und b in den gleichen Speicher, daher ist die Ausgabe in 1 gleich. Wenn b geändert wird, dh der Inhalt von a und b, die auf dieselbe Speicheradresse zeigen, geändert wurde, wird auch a widergespiegelt, sodass die Ausgabe des zweiten Beispiels dieselbe ist. Wenn b überschrieben wird, zeigt b auf einen neuen Speicher und a zeigt immer noch auf den ursprünglichen Speicher, sodass die endgültige Ausgabe anders ausfällt. Dann können Sie zu diesem Zeitpunkt

und

einführen: exportsmodule.exports

    Der Anfangswert von module.exports ist ein leeres Objekt {}
  1. exports ist ein Verweis auf module.exports
  2. require() gibt module.exports anstelle von exports zurück
  3. Wenn module.exports einen neuen Zeiger hat, sind die Exporte ungültig; wenn sich module.exports nicht geändert hat, exportieren Sie es einfach direkt.

2. AMD und RequireJS

Apropos AMD, ich muss sagen

Dass AMD sich von der CommonJS-Community unabhängig gemacht hat und die AMD-Community größtenteils darauf zurückzuführen ist Dazu setzt es auch auf die Förderung von RequireJS-Autoren.

RequireJSIn der AMD-Spezifikation lautet das standardmäßig empfohlene Modulformat:

// hello.js// 将需要引入的模块全部写入到数组中,然后传递参数进行调用define(['a', 'b'], function(a, ,b){    // do something    return{
        hello : function(username){            console.log( 'hello, '+username );
        }
    }
})
Nach dem Login kopieren
==========

// main.jsdefine(['./hello'], function(h){
    h.hello('wenzi');
})
Nach dem Login kopieren
Mit anderen Worten, in AMD müssen Module mit
definiert werden und Abhängigkeiten werden über Funktionsparameter übergeben. Ein Vorteil davon ist, dass alle Abhängigkeiten auf einen Blick ersichtlich sind.

define3. CMD und Seajs

Die CMD-Spezifikation wurde vom berühmten Yu Bo in China vorgeschlagen. Das Einzige, was zu tun ist, ist

an diesem Ort

. SeaJS verwendet die CMD-Spezifikation: 就近依赖require

Sie können den Unterschied zwischen AMD und CMD auch hier sehen:

AMD muss normalerweise alle Abhängigkeiten auf einmal einführen und sie dann über Parameter weitergeben, während CMD sie nur bei Bedarf einführt

AMD unterstützt jedoch auch Importformate wie CMD, die interne Ausführung basiert jedoch weiterhin auf der Logik von AMD.

4. Zusammenfassung

In diesem Artikel werden die relevanten Unterschiede und Zusammenhänge zwischen CommonJS-, AMD- und CMD-Spezifikationen vorgestellt:

  1. CommonJS: Jede Datei ist ein Modul und muss nicht definiert werden.

  2. AMD: Verwenden Sie define, um ein Modul zu definieren und darauf zu achten im Voraus;

  3. CMD: Verwenden Sie define, um Module zu definieren und von

    in der Nähe abhängig zu sein

Als nächstes werden wir wird beginnen Das Lernen des Knotens wird offiziell gestartet.


Erklärung dieser Website
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

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

WLAN-Erweiterungsmodul ist gestoppt [Fix] WLAN-Erweiterungsmodul ist gestoppt [Fix] Feb 19, 2024 pm 02:18 PM

Wenn es ein Problem mit dem WLAN-Erweiterungsmodul Ihres Windows-Computers gibt, kann dies dazu führen, dass Sie nicht mehr mit dem Internet verbunden sind. Diese Situation ist oft frustrierend, aber glücklicherweise enthält dieser Artikel einige einfache Vorschläge, die Ihnen helfen können, dieses Problem zu lösen und Ihre drahtlose Verbindung wieder ordnungsgemäß funktionieren zu lassen. Behebung, dass das WLAN-Erweiterbarkeitsmodul nicht mehr funktioniert Wenn das WLAN-Erweiterbarkeitsmodul auf Ihrem Windows-Computer nicht mehr funktioniert, befolgen Sie diese Vorschläge, um das Problem zu beheben: Führen Sie die Netzwerk- und Internet-Fehlerbehebung aus, um drahtlose Netzwerkverbindungen zu deaktivieren und wieder zu aktivieren. Starten Sie den WLAN-Autokonfigurationsdienst neu. Ändern Sie die Energieoptionen. Ändern Erweiterte Energieeinstellungen Netzwerkadaptertreiber neu installieren Einige Netzwerkbefehle ausführen Schauen wir uns das nun im Detail an

Das WLAN-Erweiterungsmodul kann nicht gestartet werden Das WLAN-Erweiterungsmodul kann nicht gestartet werden Feb 19, 2024 pm 05:09 PM

In diesem Artikel werden Methoden zur Behebung des Ereignisses ID10000 beschrieben, das darauf hinweist, dass das WLAN-Erweiterungsmodul nicht gestartet werden kann. Dieser Fehler kann im Ereignisprotokoll des Windows 11/10-PCs erscheinen. Das WLAN-Erweiterbarkeitsmodul ist eine Komponente von Windows, die es unabhängigen Hardwareanbietern (IHVs) und unabhängigen Softwareanbietern (ISVs) ermöglicht, Benutzern angepasste Features und Funktionen für drahtlose Netzwerke bereitzustellen. Es erweitert die Funktionalität nativer Windows-Netzwerkkomponenten durch Hinzufügen von Windows-Standardfunktionen. Das WLAN-Erweiterungsmodul wird im Rahmen der Initialisierung gestartet, wenn das Betriebssystem Netzwerkkomponenten lädt. Wenn beim WLAN-Erweiterungsmodul ein Problem auftritt und es nicht gestartet werden kann, wird möglicherweise eine Fehlermeldung im Protokoll der Ereignisanzeige angezeigt.

So verwenden Sie Express für den Datei-Upload im Knotenprojekt So verwenden Sie Express für den Datei-Upload im Knotenprojekt Mar 28, 2023 pm 07:28 PM

Wie gehe ich mit dem Datei-Upload um? Der folgende Artikel stellt Ihnen vor, wie Sie Express zum Hochladen von Dateien im Knotenprojekt verwenden. Ich hoffe, er ist hilfreich für Sie!

Python verwendet häufig Standardbibliotheken und Bibliotheken von Drittanbietern im 2-SYS-Modul Python verwendet häufig Standardbibliotheken und Bibliotheken von Drittanbietern im 2-SYS-Modul Apr 10, 2023 pm 02:56 PM

1. Einführung in das SYS-Modul Das zuvor vorgestellte OS-Modul ist hauptsächlich für das Betriebssystem gedacht, während das SYS-Modul in diesem Artikel hauptsächlich für den Python-Interpreter gedacht ist. Das sys-Modul ist ein Modul, das mit Python geliefert wird. Es ist eine Schnittstelle für die Interaktion mit dem Python-Interpreter. Das sys-Modul bietet viele Funktionen und Variablen für den Umgang mit verschiedenen Teilen der Python-Laufzeitumgebung. 2. Häufig verwendete Methoden des sys-Moduls Sie können mithilfe der dir()-Methode überprüfen, welche Methoden im sys-Modul enthalten sind: import sys print(dir(sys))1.sys.argv – Rufen Sie die Befehlszeilenparameter sys ab. argv wird verwendet, um den Befehl von außerhalb des Programms zu implementieren. Dem Programm werden Parameter übergeben und es kann die Befehlszeilenparameterspalte abrufen

Eine ausführliche Analyse des Prozessmanagement-Tools „pm2' von Node Eine ausführliche Analyse des Prozessmanagement-Tools „pm2' von Node Apr 03, 2023 pm 06:02 PM

In diesem Artikel stellen wir Ihnen das Prozessmanagement-Tool „pm2“ von Node vor und sprechen darüber, warum PM2 benötigt wird und wie Sie PM2 installieren und verwenden. Ich hoffe, dass es für alle hilfreich ist!

Python-Programmierung: Detaillierte Erläuterung der wichtigsten Punkte bei der Verwendung benannter Tupel Python-Programmierung: Detaillierte Erläuterung der wichtigsten Punkte bei der Verwendung benannter Tupel Apr 11, 2023 pm 09:22 PM

Vorwort In diesem Artikel wird weiterhin das Python-Sammlungsmodul vorgestellt. Dieses Mal werden hauptsächlich die darin enthaltenen benannten Tupel vorgestellt, dh die Verwendung von benannten Tupeln. Fangen wir ohne Umschweife an – denken Sie daran, „Gefällt mir“, „Folgen“ und „Weiterleiten“ zu markieren. Sie können überall dort verwendet werden, wo reguläre Tupel verwendet werden, und bieten die Möglichkeit, auf Felder über den Namen statt über den Positionsindex zuzugreifen. Es stammt aus den in Python integrierten Modulsammlungen. Die verwendete allgemeine Syntax lautet: Sammlungen importieren XxNamedT

PI -Knotenunterricht: Was ist ein PI -Knoten? Wie installiere und richte ich einen PI -Knoten ein? PI -Knotenunterricht: Was ist ein PI -Knoten? Wie installiere und richte ich einen PI -Knoten ein? Mar 05, 2025 pm 05:57 PM

Detaillierte Erläuterungs- und Installationshandbuch für Pinetwork -Knoten In diesem Artikel wird das Pinetwork -Ökosystem im Detail vorgestellt - PI -Knoten, eine Schlüsselrolle im Pinetwork -Ökosystem und vollständige Schritte für die Installation und Konfiguration. Nach dem Start des Pinetwork -Blockchain -Testnetzes sind PI -Knoten zu einem wichtigen Bestandteil vieler Pioniere geworden, die aktiv an den Tests teilnehmen und sich auf die bevorstehende Hauptnetzwerkveröffentlichung vorbereiten. Wenn Sie Pinetwork noch nicht kennen, wenden Sie sich bitte an was Picoin ist? Was ist der Preis für die Auflistung? PI -Nutzung, Bergbau und Sicherheitsanalyse. Was ist Pinetwork? Das Pinetwork -Projekt begann 2019 und besitzt seine exklusive Kryptowährung PI -Münze. Das Projekt zielt darauf ab, eine zu erstellen, an der jeder teilnehmen kann

Ausführliche Erklärung der Funktionsweise von Ansible Ausführliche Erklärung der Funktionsweise von Ansible Feb 18, 2024 pm 05:40 PM

Das Funktionsprinzip von Ansible kann aus der obigen Abbildung verstanden werden: Die Verwaltungsseite unterstützt drei Methoden: Lokal, SSH und Zeromq, um eine Verbindung zur verwalteten Seite herzustellen. Dieser Teil entspricht der Verbindung Im obigen Architekturdiagramm können Sie den Anwendungstyp HostInventory (Hostliste) verwenden, um entsprechende Vorgänge über verschiedene Module zu implementieren und einen einzelnen Befehl auszuführen -hoc; Der Verwaltungsknoten kann eine Reihe von Aufgaben über Playbooks implementieren, z. B. die Installation und Bereitstellung von Webdiensten, die Stapelsicherung von Datenbankservern usw. Wir können Playbooks einfach so verstehen, wie das System vergeht

See all articles