Vorwort
Wenn wir NodeJs nicht lernen, werden wir alt ... Als die HTML5-Welle kam, begannen viele Vorfahren die Reise von NodeJs, und zu dieser Zeit arbeitete ich noch an serverseitigen Programmen
Später bin ich zum Front-End gewechselt und der Abstand zwischen mir und der Staffel ist bereits sehr groß. Da ich serverseitige Sprachen kenne und schon lange arbeite, habe ich erst begonnen, NodeJs zu lernen und mich darauf zu konzentrieren ein komplettes Frontend
Der Plan, NodeJs dieses Mal zu lernen, lautet:
① 1-2 Wochen zum Erlernen der Grundkenntnisse
② Entwickeln Sie in etwa einer Woche ein einfaches Projekt
③ Verwenden Sie NodeJs, um eine Reihe von Tools für das mobile Debuggen zu entwickeln
④ Verpackungsbezogen (dies kann etwas weit weg sein)
NodeJs-Funktionen
① Asynchron
Vom Lesen von Dateien bis hin zu Netzwerkanforderungen wird NodeJs asynchron ausgeführt, und Rückruffunktionen spielen eine wichtige Rolle in Bezug auf das Programmiermodell
② Ereignisrückruf
Ereignisrückrufe machen Programme leichtgewichtig, die Details bleiben jedoch dem Programmierer überlassen. Allerdings ist die Rückruffunktion tatsächlich ziemlich schwer zu lesen
③ Einzelner Thread
Wenn es sich um einen Single-Thread-Knoten handelt, wäre die Sprache zu tiefgreifend. Es wäre ärgerlich, nach der In-Process-Kommunikation zu fragen, aber es gibt keine Deadlocks oder andere Probleme mit Threads
Es gibt jedoch ein Leistungsproblem, da Multi-Core nicht verwendet werden kann
Modulmechanismus/CommonJs
Früher führten wir eine serverseitige Entwicklung durch. Wenn der Code nicht gut organisiert ist, wird die spätere Wartung sehr schwierig sein, daher gibt es MVC und eine dreistufige Architektur
Jetzt rückt die Front-End-Geschäftslogik allmählich näher an das Back-End heran und hat die Back-End-Programmlogik überholt
Die kontinuierliche Zunahme der Seitenaufrufe wird zu einem Anstieg der Menge an js-Code führen. Die gute Verwaltung unseres Front-End-Codes ist zu einem Problem geworden, daher sind requireJs aufgetaucht ...
PS: Dieser Absatz hat nichts mit nodeJs zu tun...
JavaScript verfügt nicht über ein modulares System, daher wurde CommonJs vorgeschlagen, um js die Grundlage für die Entwicklung umfangreicher Anwendungen zu geben
Modulreferenz
Wenn wir auf ein Modul verweisen möchten, beispielsweise auf mathematische Berechnungen:var math = require('math');
Moduldefinition
Wenn wir unser eigenes Modul definieren möchten, können wir dies tun
math.add();
Modul-ID
Der Modulbezeichner ist der an require übergebene Parameter. Er muss in Kamel-Schreibweise benannt werden und verweist auf einen Dateipfad. Dies ist sehr ähnlich zu requireJS ModulimplementierungDie Modulimplementierung in Node ist in zwei Kategorien unterteilt, eine ist das Kernmodul auf Systemebene und die andere ist das vom Benutzer geschriebene Dateimodul
Die Kernmodule werden während des Kompilierungsprozesses in Binärdateien übersetzt. Nach dem Start des Node-Prozesses werden einige Kernmodule direkt in den Speicher geladen (Dateipositionierung, Kompilierung und Ausführung)
Das Dateimodul muss dynamisch geladen werden, was relativ langsam ist
Aber sobald sie geladen sind, werden diese Dateien zwischengespeichert und die zwischengespeicherten Dateien (kompilierte Dateien) werden gelesen, wenn sie erneut eingeführt werden
Gehen wir hier noch etwas weiter. Wenn wir den Unterstrich verwenden, kompilieren wir HTML, um eine Vorlagenfunktion zu bilden (es ist eigentlich nur eine Funktion, die zum Caching verwendet werden kann).
Speichern Sie die kompilierte Funktion, bevor Sie das Projekt bereitstellen, und entfernen Sie die HTML-Vorlagendatei (der Optimierungseffekt ist unbekannt)
Im Knoten ist jedes Modul ein Objekt:
Jede Moduldatei verfügt über drei Variablen: require, exports und module, diese sind jedoch nicht in der Datei definiert (dasselbe gilt für die Variablen __filename__ und __dirname__)
Tatsächlich umschließt Node während des Kompilierungsprozesses den Kopf und das Ende der Javascript-Datei (entspricht der Übergabe der benutzerdefinierten Funktion an das Fenster)
Auf diese Weise sind die Module isoliert und beeinflussen sich nicht gegenseitig. Dies ähnelt in gewisser Weise der Zusammenstellung von Unterstrichen...
Pakete und NPM
Der Knoten organisiert seine eigenen Kernmodule, sodass Dateimodule von Drittanbietern ordnungsgemäß geschrieben und verwendet werden können. In Modulen von Drittanbietern werden die Module jedoch weiterhin an verschiedenen Stellen gehasht
Sie können nicht direkt aufeinander verweisen. Modul-Outsourcing und NPM sind ein Mechanismus, um Verbindungen herzustellen
PS: Viele Module bilden ein Paket. Das Konzept dieses Pakets ähnelt dem Konzept des Java-Pakets, daher sollte das Konzept von #assembly ähnlich sein
Nach dem Dekomprimieren einer Paketstruktur werden mehrere Dateien erstellt:
① package.json-Beschreibungsdatei
② bin ausführbares Binärverzeichnis
③ lib Javascript-Codeverzeichnis
④ Dokumentdokument (fast keines)
⑤ Testdemo
Das Obige sind einige der Spezifikationen von CommonJS-Paketen, aber wir müssen es nur ein wenig verstehen (für Anfänger muss NPM beherrscht werden, um Verwaltungspakete geschickt zu installieren).
Abhängigkeitspakete installieren
npm install express
Nach der Ausführung wird das Verzeichnis node_modules im aktuellen Verzeichnis erstellt und anschließend das Express-Verzeichnis darunter erstellt ...
PS: Express ist ein beliebtes Webentwicklungs-Framework auf NodeJs, das uns hilft, schnell eine Webanwendung zu entwickeln
Nach Abschluss der Installation kann es aufgerufen werden:
Fazit
Dieser Abschnitt endet kurz und unser eigentlicher Projektprozess wird später schrittweise vertieft