Vorwort
Wenn wir NodeJs nicht lernen, werden wir alt ... als die HTML5-Welle traf, begannen viele Vorfahren ihre NodeJS-Reise, und zu dieser Zeit arbeitete ich noch an serverseitigen Programmen.
Später wechselte ich zum Front-End, und der Abstand zwischen ihm und der Echelon war bereits sehr groß. Da ich die serverseitige Sprache kannte und lange arbeitete, begann ich nur, Nodejs zu lernen und mich zum kompletten Front-End zu bewegen.
Diesmal ist der Plan, Nodejs zu lernen,:
① Grundkenntnisse in 1-2 Wochen lernen
② Entwicklung eines einfachen Projekts in etwa 1 Woche
③ Verwenden Sie NodeJs, um eine Reihe von Tools für das mobile Debuggen zu entwickeln
④ Verpackung zusammen (dies kann weit weg sein)
NodeJS -Funktionen
① Asynchron
NodeJs sind alle asynchron von der Dateilesung bis zu Netzwerkanfragen abgeschlossen, und Rückruffunktionen spielen eine wichtige Rolle. Knoten ist das führende Programmmodell
② Ereignisrückruf
Ereignisrufe machen das Programm leicht, aber die Spezifität hängt vom Programmierer ab. Die Rückruffunktion ist jedoch tatsächlich ziemlich schwer zu lesen.
③ Einzelfaden
Der Knoten ist Single-Threaded. Wenn es multi-thread ist, wird diese Sprache tiefer sein. Es ist sehr ärgerlich, ein paar Fragen zur Kommunikation im Prozess zu stellen, aber der Thread hat keine Deadlocks oder andere Probleme.
Es gibt jedoch Probleme mit der Leistungsbeziehung, da Multi-Core nicht verwendet werden kann.
Modulmechanismus/CommonJs
Früher haben wir die serverseitige Entwicklung durchgeführt. Wenn wir keinen guten Organisationscode hätten, wäre es sehr schwierig, später aufrechtzuerhalten. Welche MVC- und dreischichtige Architektur wird also da sein?
Jetzt tritt die Geschäftslogik des Front-Ends allmählich näher am Back-End heran. Bei einseitigen Anwendungen hat es die Programmlogik des Back-Ends überschritten.
Die kontinuierliche Erhöhung der Seitenansichten führt zu einem Anstieg der Menge des JS -Code. Wie man unseren Front-End-Code gut verwaltet, ist zu einem Problem geworden, daher erscheint RefordeJs ...
PS: Verdammt, diese Zeit hat eine Dime -Beziehung mit NodeJs ...
JavaScript hat kein modulares System, sodass CommonJs vorgeschlagen wurden, JS die Grundlage für die Entwicklung groß angelegter Anwendungen zu geben.
Modulreferenz
Wenn wir uns auf ein Modul verweisen möchten, wie z. B. mathematische Berechnung zu tun:
var math = fordert ('math');
Moduldefinition
Wenn wir unser eigenes Modul definieren wollen, können wir dies tun
Die Codekopie lautet wie folgt:
exports.add = function () {
Rückgabesumme;
}
Wenn diese Funktion in Mathematik definiert ist, kann sie verwendet werden
math.add ();
Modul -ID
Die Modulkennung ist der nachgewiesene Parameter. Es muss nach dem Kamel benannt und auf einen Dateipfad verweist. Es ist sehr ähnlich wie bei Anforderungen hier.
Modulimplementierung
Die Implementierung des Knotenmoduls ist in zwei Kategorien unterteilt: Einer ist das Kernmodul auf Systemebene und das andere ist das von den Benutzern verfasste Dateimodul.
Das Kernmodul wird während des Zusammenstellungsprozesses in eine binäre Datei übersetzt. Nach dem Start des Knotenprozesses werden einige Kernmodule direkt in den Speicher geladen (Dateispeicherort, Kompilierung und Ausführung).
Das Dateimodul muss dynamisch geladen werden und die Geschwindigkeit ist relativ langsam.
Nach dem Laden werden diese Dateien jedoch zwischengespeichert, und die zwischengespeicherten Dateien (kompilierte Dateien) werden beim erneuten Importieren gelesen (kompilierte Dateien)
Lassen Sie uns hier etwas weiter sprechen. Wenn wir Unterstrich verwenden, werden wir HTML zusammenstellen, um eine Vorlagenfunktion zu bilden (es ist wirklich nur eine Funktion). Tatsächlich kann dies zwischengespeichert werden.
Speichern Sie die kompilierten Funktionen, bevor Sie das Projekt bereitstellen, und entfernen Sie die HTML -Vorlagendatei (ich kenne den Optimierungseffekt nicht)
Im Knoten ist jedes Modul ein Objekt:
Die Codekopie lautet wie folgt:
Funktionsmodul (ID, Eltern) {
this.id = id;
this.exports = {};
// übergeordnet ist ein Schlüsselwort, es sollte nicht zufällig verwendet werden
this.Parent = Eltern;
if (parent && parent.children) {
parent.children.push (this);
}
this.FileName = null;
this.loaded = false;
this.children = [];
}
Die letzte Phase der Einführung des Dateimoduls während der Zusammenstellung und Ausführung. Nach dem Auffinden der spezifischen Datei erstellt der Knoten ein neues Modulobjekt und lädt und kompiliert dann entsprechend dem Pfad.
Jedes erfolgreich kompilierte Modul wird seinen Dateipfad als Index auf modul._cache zwischenspeichert
Jede Moduldatei enthält drei Variablen: Erfordernis, Exportieren und Modul, sie sind jedoch nicht in der Datei definiert (__FileName__ und __Dirname__ Variablen sind ebenfalls).
Tatsächlich wickelt der Knoten während des Kompilierungsprozesses den Inhalt des JavaScript -Dateikopfes und des Hecks (entspricht dem Übergeben einer benutzerdefinierten Funktion in das Fenster).
Die Codekopie lautet wie folgt:
(Funktion (exportiert, erfordern, Modul, __FileName__, __dirname__) {
var math = fordert ('math');
exports.area = function (radius) {
zurückkehren '';
};
});
Auf diese Weise ist das Modul isoliert und wirkt sich nicht gegenseitig aus. Es ist der Zusammenstellung von Unterstrichen etwas ähnlich ...
Paket und NPM
Der Knoten organisiert seine eigenen Kernmodule, sodass Dateimodule von Drittanbietern auf geordnete Weise geschrieben und verwendet werden können. Bei Modulen von Drittanbietern werden jedoch Module jedoch an verschiedenen Orten noch gehasht.
Es kann nicht direkt untereinander verwiesen werden. Im Modul -Outsourcing und NPM sind ein Mechanismus zur Herstellung von Verbindungen.
PS: Viele Module bilden ein Paket. Das Konzept dieses Pakets ähnelt dem des Java -Pakets.
Nach der Dekompression einer Paketstruktur werden mehrere Dateien gebildet:
① package.json Beschreibung Datei
② Bin Executable Binary Directory
③ Lib JavaScript -Codeverzeichnis
④ DOC -Dokumentation (blendend gibt es im Grunde nicht)
⑤ Test Demo
Die oben genannten sind einige der Spezifikationen des CommonJS -Pakets, aber wir können ein wenig lernen (Anfänger), und NPM muss darin kompetent sein. Mit Hilfe von NPM können wir die Installation von Managementpaketen beherrschen.
Installieren Sie das Abhängigkeitspaket
Die Installation von Abhängigkeitspaketen ist eine gemeinsame Methode:
npm install express
Nach der Ausführung wird das Verzeichnis node_modules im aktuellen Verzeichnis erstellt, und dann wird das Express -Verzeichnis darunter erstellt ...
PS: Express ist ein beliebtes Webentwicklungs -Framework für NodeJs und hilft uns, schnell eine Webanwendung zu entwickeln
Nach Abschluss der Installation kann sie aufgerufen werden:
Die Codekopie lautet wie folgt:
var express = require ('express');
Abschluss
Dieser Abschnitt ist einfach vorbei und der tatsächliche Kampfprozess unseres Projekts wird sich allmählich vertiefen.