Inhaltsverzeichnis
1. Nicht blockierende oder asynchrone E/A
2. Prototyp
3. Module
4.回调函数
Heim Web-Frontend js-Tutorial Detaillierte Erläuterung von 4 JavaScript-Konzepten von Node.js

Detaillierte Erläuterung von 4 JavaScript-Konzepten von Node.js

Mar 10, 2017 pm 02:46 PM

Ausführliche Erklärung von 4 JavaScript-Konzepten in Node.js

Wäre es nicht erstaunlich, wenn Sie nur eine Programmiersprache beherrschen müssten, um eine Full-Stack-Anwendung zu erstellen? Um diese Idee Wirklichkeit werden zu lassen, hat Ryan Dahl node.js erstellt. Node.js ist ein serverseitiges Framework, das auf der leistungsstarken V8-JavaScript-Engine von Chrome basiert. Obwohl die Anwendung ursprünglich in C++ geschrieben wurde, läuft sie über JavaScript.

Auf diese Weise ist das Problem gelöst. Eine Sprache kann sie alle beherrschen. Darüber hinaus müssen Sie in der gesamten Anwendung nur diese eine Sprache verwenden. Daher müssen wir ein tiefes Verständnis von node.js haben. Darum geht es in diesem Artikel.

Die folgenden vier Grundkonzepte sind notwendig, damit Sie node.js beherrschen. Ich werde sie Ihnen in einer möglichst kurzen Geschichte vorstellen.

1. Nicht blockierende oder asynchrone E/A

Da Node.js ein serverseitiges Framework ist, besteht eine seiner Hauptaufgaben darin, es zu verwalten Browsing-Server-Anfrage. In einem herkömmlichen I/O-System wird die aktuelle Anfrage erst ausgegeben, wenn die Antwort (HTML-Seite) der vorherigen Anfrage eingetroffen ist. Aus diesem Grund wird es als blockierende E/A bezeichnet. Der Server blockiert andere Anfragen, um die aktuelle Anfrage zu verarbeiten, was dazu führt, dass der Browser wartet.

Node.js folgt diesem I/O-Prinzip nicht. Wenn eine Anfrage lange dauert, sendet Node.js die Anfrage an die Ereignisschleife und fährt mit der Verarbeitung der nächsten Anfrage im Aufrufstapel fort. Sobald die Verarbeitung der ausstehenden Anfrage abgeschlossen ist, teilt es Node.js mit und die Antwort wird im Browser gerendert.

Verwenden Sie ein Dummy-Beispiel, um dies zu verstehen:

Blockieren von E/A

// take order for table 1 and wait...
var order1 = orderBlocking(['Coke', 'Iced Tea']);
// once order is ready, take order back to table.
serveOrder(order1);
// once order is delivered, move on to another table.
// take order for table 2 and wait...
var order2 = orderBlocking(['Coke', 'Water']);
// once order is ready, take order back to table.
serveOrder(order2);
// once order is delivered, move on to another table.
// take order for table 3 and wait...
var order3 = orderBlocking(['Iced Tea', 'Water']);
// once order is ready, take order back to table.
serveOrder(order3);
// once order is delivered, move on to another table.
Nach dem Login kopieren

In diesem Restaurantbeispiel gibt der Kellner die Speisekarte und wartet auf die Bestellung fertig, dann gehen Sie zurück zum Tisch und servieren Sie das Menü. Während der aktuelle Kunde bestellt, wartet der Kellner in der Nähe und nimmt keine Menüs von anderen Kunden entgegen.

Nicht blockierende E/A

// take order for table 1 and move on...
orderNonBlocking(['Coke', 'Iced Tea'], function(drinks){
  return serveOrder(drinks);
});
// take order for table 2 and move on...
orderNonBlocking(['Beer', 'Whiskey'], function(drinks){
  return serveOrder(drinks);
});
// take order for table 3 and move on...
orderNonBlocking(['Hamburger', 'Pizza'], function(food){
  return serveOrder(food);
});
Nach dem Login kopieren

In diesem Beispiel erhält der Kellner die Speisekarte, sagt es dem Koch und geht dann zurück, um eine weitere Speisekarte zu holen. Während er das erste Menü fertigstellt, bedient er nicht nur die aktuellen Kunden in der richtigen Reihenfolge, sondern nimmt auch Bestellungen anderer Kunden entgegen. Kellner verschwenden keine Zeit, indem sie Bestellungen anderer Kunden blockieren.

2. Prototyp

Prototyp ist ein komplexes Konzept in JavaScript. Da Sie in Node.js jedoch häufig Prototypen verwenden, muss jeder JavaScript-Entwickler dieses Konzept verstehen.

In Sprachen, die klassische Vererbung implementieren, wie Java oder C++, müssen Sie für Sprachen mit Blick auf die Wiederverwendung von Code zunächst eine Klasse schreiben und dann Objekte aus dieser Klasse erstellen oder diese erweitern Klasse. Allerdings existiert das Konzept von Klassen in JavaScript nicht. Erstellen Sie zunächst ein Objekt in JavaScript und fügen Sie dann Ihre eigenen Objekte aus diesem Objekt hinzu oder erstellen Sie neue Objekte. Dies wird als archetypische Vererbung und Verwirklichung durch Archetypen bezeichnet.

Jedes JavaScript-Objekt ist mit einem Prototypobjekt verknüpft, von dem es Eigenschaften erben kann. Prototypen ähneln Klassen in anderen OO-Sprachen, der Unterschied besteht jedoch darin, dass sie selbst auch Objekte sind. Jedes Objekt ist mit Object.prototype verknüpft und Object.prototype wird mit vordefiniertem JavaScript geliefert.

Wenn Sie eine Eigenschaft über obj.propName oder obj['propName'] suchen und das Objekt keine Eigenschaft hat, die über obj.hasOwnProperty('propName') überprüft werden kann, wird dies bei der JavaScript-Laufzeit der Fall sein Suchen Sie nach Eigenschaften in Prototypobjekten. Wenn das Prototypobjekt über eine solche Eigenschaft nicht verfügt, werden seine Prototypen der Reihe nach überprüft, bis eine Übereinstimmung gefunden wird oder Object.prototype erreicht wird. Wenn für die Eigenschaft keine Prototypenkette vorhanden ist, führt dies zu einem undefinierten Wert.

Verstehen Sie dieses Konzept mit dem folgenden Beispielcode:

if (typeof Object.create !== 'function') {
    Object.create = function (o) {
        var F = function () {};
        F.prototype = o;
        return new F();
    };
var otherPerson = Object.create(person);
Nach dem Login kopieren

Wenn Sie ein neues Objekt erstellen, müssen Sie ein Objekt auswählen, das sein Prototyp sein soll. Hier fügen wir der Objektfunktion eine Methode hinzu. Diese Methode erstellt ein neues Objekt unter Verwendung eines anderen Objekts als Prototyp, der ihm als Parameter übergeben wird.

Wenn wir ein neues Objekt ändern, ist sein Prototyp davon nicht betroffen. Wenn wir jedoch Änderungen an einem Prototypobjekt vornehmen, sind diese Änderungen für alle auf diesem Prototyp basierenden Objekte sichtbar.

Prototyp ist ein komplexes Konzept. Darauf werde ich in einem anderen Artikel näher eingehen.

3. Module

Wenn Sie jemals mit Paketen in Java in Berührung gekommen sind, sind Module in Node.js nicht anders. Wenn nicht, dann machen Sie sich keine Sorgen. Module sind einfache JavaScript-Dateien, die Code für einen bestimmten Zweck enthalten. Das Modulmuster wird verwendet, um die Navigation und Verwendung Ihres Codes zu vereinfachen. Um ein Modulattribut verwenden zu können, müssen Sie es in einer JavaScript-Datei angeben, ähnlich wie beim Importieren eines Pakets in eine Java-Klasse.

Es gibt zwei Arten von Modulen in node.js.

Kernmodule – Diese Module sind mit der Node.js-Bibliothek vorkompiliert. Der Zweck von Kernmodulen besteht darin, Entwicklern häufig auftretende und sich wiederholende Codefragmente zur Verfügung zu stellen, die, wenn sie nicht verfügbar wären, Entwickler in die Lage versetzen würden, immer wieder denselben Code schreiben zu müssen. Einige gängige Kernmodule sind HTTP, URL, EVENTS, FILE SYSTEM usw.

用户定义模块——用户定义模块是开发人员在应用程序内创建用于特定目的的模块。当核心模块不能满足期望功能的时候就需要用户定义模块。

模块通过require函数提取。如果它是一个核心模块,那么参数仅仅是模块的名称。如果它是一个用户自定义模块,那么参数就是该模块在文件系统中的路径。例如:

// extract a core module like this
var http = require('http);
// extract a user defined module like this
var something = require('./folder1/folder2/folder3/something.js');
Nach dem Login kopieren

4.回调函数

在JavaScript中,函数被认为是第一类对象。这意味着你可以对这些函数做所有可对常规对象做的操作。你可以赋值函数给变量,作为参数传递函数给方法,作为对象属性声明函数,甚至从函数返回函数。

回调函数是JavaScript中的匿名函数,它可以作为参数传递给其他函数,要么被执行或返回自函数稍后执行。这是回调函数——这个使用最广的函数编程范式的基础。

当我们将回调函数作为参数传递给另一个函数的时候,我们只能传递函数定义……换言之就是,我们不知道这个回调函数什么时候会执行。这完全取决于调用函数的机制。它会在以后的某个时间点“回调”,因此而得名。这也是非阻塞或Node.js异步行为的唯一基础,如下例所示。

setTimeout(function() {
    console.log("world");
}, 2000)
console.log("hello");
Nach dem Login kopieren

这是回调函数最简单的例子之一。我们将一个匿名函数作为一个参数传递,这个参数只需在控制台上记录一些输出到setTimeout函数。它是唯一的函数定义,但是不知道何时执行。这需要经过2秒后,通过第二个参数,调用setTimeout函数来决定。

首先,第二个日志语句记录输出到控制台,然后,2秒钟后,回调函数中的日志语句记录输出。

// output
hello
world
Nach dem Login kopieren


Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung von 4 JavaScript-Konzepten von Node.js. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

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)

So implementieren Sie ein Online-Spracherkennungssystem mit WebSocket und JavaScript So implementieren Sie ein Online-Spracherkennungssystem mit WebSocket und JavaScript Dec 17, 2023 pm 02:54 PM

So implementieren Sie mit WebSocket und JavaScript ein Online-Spracherkennungssystem. Einführung: Mit der kontinuierlichen Weiterentwicklung der Technologie ist die Spracherkennungstechnologie zu einem wichtigen Bestandteil des Bereichs der künstlichen Intelligenz geworden. Das auf WebSocket und JavaScript basierende Online-Spracherkennungssystem zeichnet sich durch geringe Latenz, Echtzeit und plattformübergreifende Eigenschaften aus und hat sich zu einer weit verbreiteten Lösung entwickelt. In diesem Artikel wird erläutert, wie Sie mit WebSocket und JavaScript ein Online-Spracherkennungssystem implementieren.

WebSocket und JavaScript: Schlüsseltechnologien zur Implementierung von Echtzeitüberwachungssystemen WebSocket und JavaScript: Schlüsseltechnologien zur Implementierung von Echtzeitüberwachungssystemen Dec 17, 2023 pm 05:30 PM

WebSocket und JavaScript: Schlüsseltechnologien zur Realisierung von Echtzeit-Überwachungssystemen Einführung: Mit der rasanten Entwicklung der Internet-Technologie wurden Echtzeit-Überwachungssysteme in verschiedenen Bereichen weit verbreitet eingesetzt. Eine der Schlüsseltechnologien zur Erzielung einer Echtzeitüberwachung ist die Kombination von WebSocket und JavaScript. In diesem Artikel wird die Anwendung von WebSocket und JavaScript in Echtzeitüberwachungssystemen vorgestellt, Codebeispiele gegeben und deren Implementierungsprinzipien ausführlich erläutert. 1. WebSocket-Technologie

Verwendung von JavaScript und WebSocket zur Implementierung eines Echtzeit-Online-Bestellsystems Verwendung von JavaScript und WebSocket zur Implementierung eines Echtzeit-Online-Bestellsystems Dec 17, 2023 pm 12:09 PM

Einführung in die Verwendung von JavaScript und WebSocket zur Implementierung eines Online-Bestellsystems in Echtzeit: Mit der Popularität des Internets und dem Fortschritt der Technologie haben immer mehr Restaurants damit begonnen, Online-Bestelldienste anzubieten. Um ein Echtzeit-Online-Bestellsystem zu implementieren, können wir JavaScript und WebSocket-Technologie verwenden. WebSocket ist ein Vollduplex-Kommunikationsprotokoll, das auf dem TCP-Protokoll basiert und eine bidirektionale Kommunikation zwischen Client und Server in Echtzeit realisieren kann. Im Echtzeit-Online-Bestellsystem, wenn der Benutzer Gerichte auswählt und eine Bestellung aufgibt

So implementieren Sie ein Online-Reservierungssystem mit WebSocket und JavaScript So implementieren Sie ein Online-Reservierungssystem mit WebSocket und JavaScript Dec 17, 2023 am 09:39 AM

So implementieren Sie ein Online-Reservierungssystem mit WebSocket und JavaScript. Im heutigen digitalen Zeitalter müssen immer mehr Unternehmen und Dienste Online-Reservierungsfunktionen bereitstellen. Es ist von entscheidender Bedeutung, ein effizientes Online-Reservierungssystem in Echtzeit zu implementieren. In diesem Artikel wird erläutert, wie Sie mit WebSocket und JavaScript ein Online-Reservierungssystem implementieren, und es werden spezifische Codebeispiele bereitgestellt. 1. Was ist WebSocket? WebSocket ist eine Vollduplex-Methode für eine einzelne TCP-Verbindung.

JavaScript und WebSocket: Aufbau eines effizienten Echtzeit-Wettervorhersagesystems JavaScript und WebSocket: Aufbau eines effizienten Echtzeit-Wettervorhersagesystems Dec 17, 2023 pm 05:13 PM

JavaScript und WebSocket: Aufbau eines effizienten Echtzeit-Wettervorhersagesystems Einführung: Heutzutage ist die Genauigkeit von Wettervorhersagen für das tägliche Leben und die Entscheidungsfindung von großer Bedeutung. Mit der Weiterentwicklung der Technologie können wir genauere und zuverlässigere Wettervorhersagen liefern, indem wir Wetterdaten in Echtzeit erhalten. In diesem Artikel erfahren Sie, wie Sie mit JavaScript und WebSocket-Technologie ein effizientes Echtzeit-Wettervorhersagesystem aufbauen. In diesem Artikel wird der Implementierungsprozess anhand spezifischer Codebeispiele demonstriert. Wir

Einfaches JavaScript-Tutorial: So erhalten Sie den HTTP-Statuscode Einfaches JavaScript-Tutorial: So erhalten Sie den HTTP-Statuscode Jan 05, 2024 pm 06:08 PM

JavaScript-Tutorial: So erhalten Sie HTTP-Statuscode. Es sind spezifische Codebeispiele erforderlich. Vorwort: Bei der Webentwicklung ist häufig die Dateninteraktion mit dem Server erforderlich. Bei der Kommunikation mit dem Server müssen wir häufig den zurückgegebenen HTTP-Statuscode abrufen, um festzustellen, ob der Vorgang erfolgreich ist, und die entsprechende Verarbeitung basierend auf verschiedenen Statuscodes durchführen. In diesem Artikel erfahren Sie, wie Sie mit JavaScript HTTP-Statuscodes abrufen und einige praktische Codebeispiele bereitstellen. Verwenden von XMLHttpRequest

So verwenden Sie insertBefore in Javascript So verwenden Sie insertBefore in Javascript Nov 24, 2023 am 11:56 AM

Verwendung: In JavaScript wird die Methode insertBefore() verwendet, um einen neuen Knoten in den DOM-Baum einzufügen. Diese Methode erfordert zwei Parameter: den neuen Knoten, der eingefügt werden soll, und den Referenzknoten (d. h. den Knoten, an dem der neue Knoten eingefügt wird).

JavaScript und WebSocket: Aufbau eines effizienten Echtzeit-Bildverarbeitungssystems JavaScript und WebSocket: Aufbau eines effizienten Echtzeit-Bildverarbeitungssystems Dec 17, 2023 am 08:41 AM

JavaScript ist eine in der Webentwicklung weit verbreitete Programmiersprache, während WebSocket ein Netzwerkprotokoll für die Echtzeitkommunikation ist. Durch die Kombination der leistungsstarken Funktionen beider können wir ein effizientes Echtzeit-Bildverarbeitungssystem erstellen. In diesem Artikel wird erläutert, wie dieses System mithilfe von JavaScript und WebSocket implementiert wird, und es werden spezifische Codebeispiele bereitgestellt. Zunächst müssen wir die Anforderungen und Ziele des Echtzeit-Bildverarbeitungssystems klären. Angenommen, wir haben ein Kameragerät, das Bilddaten in Echtzeit sammeln kann

See all articles