Meine NodeJs-Lernzusammenfassung (1)_node.js
Lassen Sie uns in diesem ersten Artikel über einige Programmierdetails von NodeJs sprechen.
1. Durchqueren Sie das Array
for (var i=0, l=arr.length; i<l; i++)
Ein Vorteil dieser Schreibweise besteht darin, dass jede Schleife einen Schritt einspart, um die Länge des Array-Objekts zu ermitteln. Je länger die Array-Länge, desto offensichtlicher ist der Wert.
2. Bestimmen Sie, ob die Variable wahr oder falsch ist
if (a) {...} //a='', a='0', a=[], a={}
Die Ergebnisse der bedingten Beurteilung sind: falsch, wahr, wahr, wahr. Dieses Ergebnis unterscheidet sich vom PHP-Ergebnis. Lassen Sie sich nicht verwirren. Es ist auch notwendig, zwischen Situationen zu unterscheiden, die Nichtidentitätsurteilen ähneln.
3. Beurteilung der Nichtidentität mit dem Wert 0
1 if (0 == '0') {...} //true 2 if (0 == []) {...} //true 3 if (0 == [0]) {...} //true 4 if (0 == {}) {...} //false 5 if (0 == null) {...} //false 6 if (0 == undefined) {...} //false
Tatsächlich gibt es viele solcher seltsamen Urteile, ich habe nur die häufigeren aufgelistet. Wenn Sie die Regeln verstehen möchten, lesen Sie bitte meinen anderen Blog-Beitrag: [JavaScript] Ausführliche Analyse der relationalen Operationen und if-Anweisungen von JavaScript.
4. Die Falle von parseInt
var n = parseInt(s); //s='010'
Nachdem diese Anweisung ausgeführt wurde, beträgt der Wert von n 8 und nicht 10. Obwohl viele Leute das wissen, sind Fehler beim Programmieren unvermeidlich, und ich weiß es sehr gut. Daher ist es am besten, so zu schreiben, dass Sie keine Fehler machen.
var n = parseInt(s, 10);
5. Variablen müssen vor der Verwendung deklariert werden
Obwohl es keinen Fehler gibt, Variablen direkt zu verwenden, ohne sie zu deklarieren, ist das Schreiben auf diese Weise sehr fehleranfällig. Da der Interpreter sie als globale Variable interpretiert, kann sie leicht denselben Namen wie andere globale Variablen haben und Fehler verursachen. Daher müssen wir eine gute Angewohnheit entwickeln, Variablen zu deklarieren, bevor wir sie verwenden.
6. Es liegt eine asynchrone Situation in der Schleife vor
for (var i=0, l=arr.length; i<l; i++) { var sql = "select * from nx_user"; db.query(sql, function(){ sys.log(i + ': ' + sql); }); //db.query为表查询操作,是异步操作 }
Sie werden feststellen, dass die Ausgabeergebnisse dieselben sind und dass sie der Ausgabeinhalt sind, wenn i = arr.length-1. Da JavaScript Single-Threaded ist, führt es zunächst den synchronen Inhalt der gesamten Schleife aus, bevor die asynchronen Vorgänge ausgeführt werden. Die anonyme Rückruffunktion im Code ist ein asynchroner Rückruf. Wenn diese Funktion ausgeführt wird, sind die for-Schleife und einige nachfolgende Synchronisierungsvorgänge abgeschlossen. Aufgrund des Abschlussprinzips behält diese Funktion den Inhalt der SQL-Variablen und der i-Variablen in der letzten Schleife der for-Schleife bei, was zu falschen Ergebnissen führt.
Was sollen wir also tun? Es gibt zwei Lösungen: Eine davon besteht darin, eine Sofortfunktion wie folgt zu verwenden:
for (var i=0, l=arr.length; i<l; i++) { var sql = "select * from nx_user"; (function(sql, i){ db.query(sql, function(){ sys.log(i + ': ' + sql); }); //db.query为表查询操作,是异步操作 })(sql, i); }
Eine andere Methode besteht darin, den asynchronen Operationsteil zu extrahieren und eine Funktion wie folgt zu schreiben:
var outputSQL = function(sql, i){ db.query(sql, function(){ sys.log(i + ': ' + sql); }); //db.query为表查询操作,是异步操作 } for (var i=0, l=arr.length; i<l; i++) { var sql = "select * from nx_user"; outputSQL(sql, i); }
7. Vermeiden Sie bei der Verarbeitung großer Datenmengen verschachtelte Schleifen.
Da die Verarbeitungszeit verschachtelter Schleifen mit zunehmender Datenmenge exponentiell zunimmt, sollte dies so weit wie möglich vermieden werden. Wenn es in diesem Fall keinen besseren Weg gibt, besteht die allgemeine Strategie darin, Raum gegen Zeit zu tauschen, also eine Hash-Mapping-Tabelle sekundärer zyklischer Daten zu erstellen. Natürlich müssen die konkreten Umstände im Einzelfall analysiert werden. Ein weiterer zu erwähnender Punkt ist, dass einige Methoden selbst ein Schleifenkörper sind, wie z. B. Array.sort() (diese Methode sollte mithilfe von zwei Schleifenebenen implementiert werden), sodass Sie bei der Verwendung darauf achten müssen.
8. Versuchen Sie, rekursive Aufrufe zu vermeiden.
Der Vorteil des rekursiven Aufrufs besteht darin, dass der Code prägnant und die Implementierung einfach ist. Die Nachteile sind jedoch sehr wichtig und werden wie folgt erläutert:
(1) Die Größe des Funktionsstapels wächst linear mit der Rekursionsebene, und der Funktionsstapel hat eine Obergrenze. Wenn die Rekursion eine bestimmte Ebene erreicht, läuft der Funktionsstapel über, was zu Programmfehlern führt
(2) Jede rekursive Ebene fügt zusätzliche Stack-Push- und Pop-Operationen hinzu, dh das Speichern der Szene und das Wiederherstellen der Szene während des Funktionsaufrufs.Daher sollten rekursive Aufrufe so weit wie möglich vermieden werden.
9. Bezüglich der Bereichsisolierung von Moduldateien.
Wenn Node die JavaScript-Moduldatei kompiliert, wurde ihr Inhalt vollständig wie folgt gepackt:
(function(exports, require, module, __filename, __dirname){ 你的JavaScript文件代码 });
(function(){ ... ... })();
Das Folgende ist ein Beispiel für einen Fehlercode:
var o = []; o['name'] = 'LiMing';
var o = []; o['name'] = 'LiMing'; var s = JSON.stringify(o);
Ursprünglich dachte er, dass das Namensattribut des Objekts o in der JSON-Zeichenfolge enthalten sein würde, aber das Ergebnis war, dass dies nicht der Fall war. Ich war damals auch sehr überrascht, aber ich hatte den Verdacht, dass es ein Problem mit der Vermischung von Arrays und Objekten war. Ich habe es ausprobiert und es stellte sich heraus, dass es das Problem war. Später habe ich in der ECMA-Spezifikation herausgefunden, dass Arrays nach JA-Regeln serialisiert werden. Daher ist es notwendig, eine gute Programmiergewohnheit zu entwickeln, Arrays und Objekte richtig zu verwenden und sie nicht zu vermischen.
11. Elegante Promise-Programmierung
Ich glaube, dass jeder, der mit nodeJs in Kontakt gekommen ist, diese Erfahrung gemacht hat. Wenn asynchrone Rückrufe in asynchronen Rückrufen verschachtelt sind, wird der Code verwirrend und unleserlich. Dieses Dilemma von NodeJs kann mit Hilfe von Versprechen überwunden werden. Versprechen ist wie ein Schnitzer, der Ihren Code elegant und schön macht. Promise hat eine A-Spezifikation und es gibt online mehrere Implementierungsmethoden, auf die Sie sich beziehen können.

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

Die Hauptunterschiede zwischen Node.js und Tomcat sind: Laufzeit: Node.js basiert auf der JavaScript-Laufzeit, während Tomcat ein Java-Servlet-Container ist. E/A-Modell: Node.js verwendet ein asynchrones, nicht blockierendes Modell, während Tomcat synchrones Blockieren verwendet. Parallelitätsbehandlung: Node.js verarbeitet die Parallelität über eine Ereignisschleife, während Tomcat einen Thread-Pool verwendet. Anwendungsszenarien: Node.js eignet sich für Echtzeit-, datenintensive und Anwendungen mit hoher Parallelität, und Tomcat eignet sich für herkömmliche Java-Webanwendungen.

Node.js ist eine serverseitige JavaScript-Laufzeitumgebung, während Vue.js ein clientseitiges JavaScript-Framework zum Erstellen interaktiver Benutzeroberflächen ist. Node.js wird für die serverseitige Entwicklung verwendet, beispielsweise für die Entwicklung von Back-End-Service-APIs und die Datenverarbeitung, während Vue.js für die clientseitige Entwicklung verwendet wird, beispielsweise für Single-Page-Anwendungen und reaktionsfähige Benutzeroberflächen.

Node.js kann als Backend-Framework verwendet werden, da es Funktionen wie hohe Leistung, Skalierbarkeit, plattformübergreifende Unterstützung, ein umfangreiches Ökosystem und einfache Entwicklung bietet.

Es gibt zwei npm-bezogene Dateien im Node.js-Installationsverzeichnis: npm und npm.cmd. Die Unterschiede sind wie folgt: unterschiedliche Erweiterungen: npm ist eine ausführbare Datei und npm.cmd ist eine Befehlsfensterverknüpfung. Windows-Benutzer: npm.cmd kann über die Eingabeaufforderung verwendet werden, npm kann nur über die Befehlszeile ausgeführt werden. Kompatibilität: npm.cmd ist spezifisch für Windows-Systeme, npm ist plattformübergreifend verfügbar. Nutzungsempfehlungen: Windows-Benutzer verwenden npm.cmd, andere Betriebssysteme verwenden npm.

Um eine Verbindung zu einer MySQL-Datenbank herzustellen, müssen Sie die folgenden Schritte ausführen: Installieren Sie den MySQL2-Treiber. Verwenden Sie mysql2.createConnection(), um ein Verbindungsobjekt zu erstellen, das die Hostadresse, den Port, den Benutzernamen, das Passwort und den Datenbanknamen enthält. Verwenden Sie „connection.query()“, um Abfragen durchzuführen. Verwenden Sie abschließend Connection.end(), um die Verbindung zu beenden.

Ja, Node.js ist eine Backend-Entwicklungssprache. Es wird für die Back-End-Entwicklung verwendet, einschließlich der Handhabung serverseitiger Geschäftslogik, der Verwaltung von Datenbankverbindungen und der Bereitstellung von APIs.

Die folgenden globalen Variablen sind in Node.js vorhanden: Globales Objekt: global Kernmodul: Prozess, Konsole, erforderlich Laufzeitumgebungsvariablen: __dirname, __filename, __line, __column Konstanten: undefiniert, null, NaN, Infinity, -Infinity

Die Hauptunterschiede zwischen Node.js und Java sind Design und Funktionen: Ereignisgesteuert vs. Thread-gesteuert: Node.js ist ereignisgesteuert und Java ist Thread-gesteuert. Single-Threaded vs. Multi-Threaded: Node.js verwendet eine Single-Threaded-Ereignisschleife und Java verwendet eine Multithread-Architektur. Laufzeitumgebung: Node.js läuft auf der V8-JavaScript-Engine, während Java auf der JVM läuft. Syntax: Node.js verwendet JavaScript-Syntax, während Java Java-Syntax verwendet. Zweck: Node.js eignet sich für I/O-intensive Aufgaben, während Java für große Unternehmensanwendungen geeignet ist.
