Heim > Web-Frontend > js-Tutorial > Hauptteil

Einführung in NodeJS

Linda Hamilton
Freigeben: 2024-10-24 06:22:02
Original
656 Leute haben es durchsucht

Node.js ist eine leistungsstarke und beliebte JavaScript-Laufzeitumgebung, die auf der V8-JavaScript-Engine von Chrome basiert.

Merkmale

1) Ereignisgesteuerte Architektur:
Node.js verwendet ein ereignisgesteuertes, nicht blockierendes I/O-Modell

Blockierungsvorgänge:
Die Programmausführung wird angehalten oder wartet, bis der Vorgang abgeschlossen ist. Während dieser Zeit steht das System oder der Thread nicht für andere Aufgaben zur Verfügung.
Blockierungsvorgänge sind normalerweise synchron, da sie die Ausführung des folgenden Codes anhalten, bis sie abgeschlossen sind

Synchron:
Das Programm wartet, bis der Vorgang abgeschlossen ist, bevor es mit der nächsten Aufgabe fortfährt.
Ex. Eine Datei synchron in Node.js lesen:

Nicht blockierende Vorgänge:
Das Programm wartet nicht auf den Abschluss des Vorgangs. Stattdessen werden andere Aufgaben ausgeführt, während der Vorgang im Hintergrund weiterläuft.

Asynchron:
Das Programm kann andere Aufgaben ausführen, während es auf den Abschluss des Vorgangs wartet. Komplexer, erfordert Mechanismen zur Verarbeitung asynchroner Ergebnisse (z. B. Rückrufe, Versprechen, asynchron/wartend).

Ereignisschleife
Die Ereignisschleife ist für die Verwaltung und Ausführung von Rückrufen für asynchrone Vorgänge verantwortlich.

2) Asynchron und nicht blockierend:

Die Ereignisschleife ist eine Kernkomponente von Node.js, die die Ausführung asynchroner Vorgänge verwaltet und koordiniert.

Komponenten der Ereignisschleife:

Anrufstapel:
Der Aufrufstapel verfolgt die aktuell ausgeführten Funktionen. Es handelt sich um eine Stapeldatenstruktur, in der Funktionen beim Aufruf hinzugefügt und nach Abschluss entfernt werden.

Rückrufwarteschlange:
Diese Warteschlange enthält Rückrufe für asynchrone Vorgänge (wie E/A-Vorgänge, Timer oder Netzwerkanforderungen), die abgeschlossen wurden und auf ihre Ausführung warten.

Ereigniswarteschlange:
Ähnlich wie in der Rückrufwarteschlange werden hier Ereignisse und die damit verbundenen Rückrufe gespeichert. Ereignisse sind Dinge wie Benutzerinteraktionen, Timer-Abläufe oder Netzwerkantworten.

Mikrotask-Warteschlange (oder nächste Tick-Warteschlange):
Diese Warteschlange enthält Mikrotasks, bei denen es sich typischerweise um Versprechen und deren .then()-Rückrufe handelt. Mikrotasks haben eine höhere Priorität als Rückrufe und werden vor der Ereigniswarteschlange verarbeitet.

Timer:
Die Ereignisschleife verwaltet Timer mithilfe von setTimeout() und setInterval(). Diese werden nach einer bestimmten Verzögerung oder in regelmäßigen Abständen ausgeführt.

E/A-Operationen:
Die Ereignisschleife verarbeitet E/A-Vorgänge wie Dateilesevorgänge, Netzwerkanforderungen und Datenbankabfragen. Dadurch kann Node.js diese Vorgänge asynchron verarbeiten, ohne den Hauptthread zu blockieren.

const fs = require('fs');

// Asynchronous file read
fs.readFile('file.txt', 'utf8', (err, data) => {
  console.log('File read complete:', data);
});

// Synchronous operation
console.log('This prints first');

// Timer
setTimeout(() => {
  console.log('Timeout executed');
}, 0);

console.log('This prints second');
Nach dem Login kopieren
Nach dem Login kopieren

Ausführungsauftrag:

Der synchrone Code (console.log('This prints first') und console.log('This prints second')) wird zuerst ausgeführt, wenn er dem Aufrufstapel hinzugefügt wird.

Der fs.readFile-Callback und der setTimeout-Callback werden zu ihren jeweiligen Warteschlangen (Callback-Warteschlange und Timer-Warteschlange) hinzugefügt.

Nach der synchronen Codeausführung verarbeitet die Ereignisschleife die Timer-Warteschlange und führt den setTimeout-Rückruf aus. Als nächstes verarbeitet es die Rückrufwarteschlange und führt den fs.readFile-Rückruf aus.

Servererstellung

const fs = require('fs');

// Asynchronous file read
fs.readFile('file.txt', 'utf8', (err, data) => {
  console.log('File read complete:', data);
});

// Synchronous operation
console.log('This prints first');

// Timer
setTimeout(() => {
  console.log('Timeout executed');
}, 0);

console.log('This prints second');
Nach dem Login kopieren
Nach dem Login kopieren

Introduction to NodeJS

Rückrufe

Ein Callback ist eine Funktion, die als Argument an eine andere Funktion übergeben wird und dann innerhalb der äußeren Funktion aufgerufen wird, um eine Art Routine oder Aktion abzuschließen.

var http = require('http');

const server = http.createServer(function(req, res) {
  res.writeHead(200, { 'Content-Type': 'text/plain' });
  res.end('Hello World\n');
})

server.listen(8080, () => {
  console.log('Server running at http://127.0.0.1:8080/');
});

Nach dem Login kopieren

Versprechen

Ein Objekt, das den eventuellen Abschluss (oder Fehler) eines asynchronen Vorgangs und seinen resultierenden Wert darstellt.

function downloadFile(url, callback) {
    console.log(`Starting to download file from ${url}`);
    setTimeout(() => {
        console.log('File downloaded successfully');
        callback('File content');
    }, 2000); 
}

function processFile(content) {
    console.log(`Processing file with content: ${content}`);
}

downloadFile('http://example.com/file', processFile);
Nach dem Login kopieren

Bleiben Sie in Verbindung!
Wenn Ihnen dieser Beitrag gefallen hat, vergessen Sie nicht, mir in den sozialen Medien zu folgen, um weitere Updates und Einblicke zu erhalten:

Twitter: madhavganesan
Instagram: madhavganesan
LinkedIn: madhavganesan

Das obige ist der detaillierte Inhalt vonEinführung in NodeJS. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:dev.to
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!