Was ist Node.JS und wofür wird es verwendet?

0
91

Wenn Sie irgendeine Art von Webentwicklung betreiben, 8217;wir werden wahrscheinlich irgendwann JavaScript lernen und schreiben müssen. Node soll die Entwicklung von Webanwendungen durch die Vereinheitlichung der server- und clientseitigen Sprachen vereinfachen.

Was ist Node?

Node.JS , allgemein einfach als Node bezeichnet, ist eine JavaScript-Laufzeit, mit der Sie JS-Code außerhalb eines Webbrowsers ausführen können. Node basiert auf der JavaScript-Engine V8 von Google, die auch für die Verarbeitung in Chrome verwendet wird.

Es wird häufig zum Erstellen von Anwendungen, zum Arbeiten mit modernen Web-App-Frameworks und zum serverseitigen Skripting mit JS verwendet. In der Praxis können Sie mit Node .js-Dateien mit dem node-Befehl ausführen, ähnlich wie Sie .py-Dateien mit Python ausführen würden:

node main.js

JavaScript-Code funktioniert etwas anders, wenn er in Node. Zunächst einmal gibt es kein DOM (den geladenen HTML-Code einer Webseite), sodass Sie nicht auf HTML-Elemente zugreifen oder eine Bibliothek wie jQuery effektiv verwenden können (obwohl es Alternativen gibt). Sie haben jedoch Zugriff auf Systemressourcen und können Dateien lesen und schreiben, Netzwerkverbindungen herstellen und sogar Anwendungen bedienen.

Node wird auch zum Erstellen von Desktop-Apps mithilfe eines Frameworks namens Electron verwendet. Electron unterstützt Slack, Discord, Visual Studio Code und Skype. Im Wesentlichen läuft eine abgespeckte Version von Chrome für den Desktop, und die App selbst ist eigentlich nur eine Web-App. Als Folge davon sind Electron-Apps jedoch sehr RAM-hungrig und laufen etwas schlechter als ihre nativen Gegenstücke, aber dieser Handel wird oft für Einheitlichkeit über alle Betriebssysteme und das Web gemacht.

Das Node-Ökosystem (npm-Module)

Node selbst ist cool, aber es wäre nicht annähernd so, wie es heute ist, wenn es nicht wäre npm, der Node-Paketmanager. npm ermöglicht die Erweiterung von Node mit Frameworks und Plugins und ermöglicht die einfache Installation und Einbindung von Code in ein neues Projekt.

Werbung

Angenommen, Sie arbeiten an einem Skript und müssen eine POST-Anfrage an eine externe Ressource senden. Sie können die integrierte Abrufmethode von JS oder Axios verwenden, die Versprechen verwendet und einfacher zu verwenden ist. Wenn Sie Ihrem Projekt Axios hinzufügen möchten, möchten Sie Ihr Skript in einen eigenen Ordner verschieben und ausführen:

npm init npm install axios

Dadurch wird eine Datei namens package.json erstellt, die Projekteinstellungen und installierte Pakete verfolgt. Der Befehl npm install erstellt einen Ordner namens node_modules, in dem heruntergeladene Module gespeichert werden. Seien Sie gewarnt, dieser Ordner kann bei großen Projekten mit vielen Modulen sehr groß sein.

Um axios in Ihrem Skript zu verwenden, setzen Sie diese Zeile ganz oben:

const axios = erfordern('axios');

Oder in ES6-Syntax:

Axios aus 'axios' importieren;

Dadurch wird das Modul aus node_modules importiert und Ihr Skript kann darauf zugreifen. Von dort aus können Sie es verwenden, als wäre es Teil Ihres Projekts und nur eine andere Funktion, die Sie erstellt haben.

Axios ist nur ein einfaches Beispiel für ein nützliches npm-Dienstprogramm. Sie haben wahrscheinlich schon von anderen Modulen wie React, Angular oder Vue gehört. All dies sind vollständige Webanwendungs-Frameworks, die zum Erstellen interaktiver Apps verwendet werden, die im Browser ausgeführt werden. Apps, die mit diesen Frameworks erstellt wurden, werden allgemein als “Knoten-Apps” Obwohl sie nicht wirklich mit Node laufen, da das Endprodukt statisches HTML sein wird, das Sie mit jedem alten Webserver bereitstellen können, wird Node für die Entwicklung verwendet und Pakete werden mit npm aus dem Node-Ökosystem installiert.

Werbung

Es ist schließlich alles JavaScript. Häufig verwendet der Entwicklungscode “next-gen” JavaScript wie ES6 und mit Webpack und Babel zu einem großen “bundle.js” Datei, die dem Client zur Ausführung bereitgestellt werden kann.

Wie funktioniert Node mit nginx und Apache?

Node selbst verbindet sich nicht direkt mit nginx oder Apache. Node führt lediglich .js-Dateien aus. Mit React oder anderen Frameworks erstellte Node-Apps funktionieren jedoch etwas anders als normale HTML-Seiten.

Mit React stellen Sie im Wesentlichen eine leere HTML-Seite bereit, die eine Bundle.js-Datei lädt. Diese Bundle-Datei funktioniert wie jede andere Javascript-Datei, und Sie können nginx oder Apache als Webserver verwenden, um sie zu hosten. Das Bundle lädt React, das sich dann auf der Webseite rendert und Ihren Inhalt anzeigt. Der gesamte Inhalt ist in der Bundle-Datei enthalten.

Zu beachten ist eine beliebte Bibliothek namens Express. Express stellt Webinhalte bereit und kann als HTTP-Server fungieren. Es wird häufig als Router für die Erstellung einer knotenbasierten REST-API verwendet. Express kann einen Port abhören, die Anfrage an eine andere Funktion weiterleiten (normalerweise auf eine andere Ressource wie eine Datenbank zugreifen) und dann eine HTTP-Antwort zurücksenden.

In diesem Fall würden Sie Express hinter dem nginx-Server platzieren, den Sie für Ihre statischen Inhalte verwenden, und alle /api-Routen an Express weiterleiten. Auf diese Weise kann Ihre Web-App auf externe Ressourcen zugreifen und die serverseitige Scripting-Leistung von Node sowie die Fähigkeit, mit Datenbanken zu kommunizieren, vollständig nutzen. Sie können nginx als Reverse-Proxy für die /api-Route und als Webserver für die anderen statischen Inhalte verwenden.

Express ist jedoch kein Webserver. Es sollte in diesem Beispiel nicht an die Stelle von nginx treten. Es kann als eins fungieren, und es ist sehr nützlich, einen einfachen Express-Server für die Entwicklung oder eine einfache Seite einzurichten, die nicht viel Verkehr erhält. Aber es ist weit entfernt von der Leistung von nginx und Apache, die native Apps sind. Wenn Sie eine echte Webanwendung erstellen, stellen Sie sie mit nginx bereit und verwenden Sie Express nur zum Bereitstellen von APIs.

Sollte ich Node for My verwenden? Webseite?

Erstellen Sie eine Web-App? In diesem Fall sollten Sie Node ernsthaft in Betracht ziehen. Alternativen wären Ruby on Rails, Laravel mit PHP und Django mit Python. Aber Node hat bei weitem die größte Community und hat eine große Auswahl, wenn es um Frameworks geht. Wenn Sie Ruby on Rails nicht mögen, bleiben Sie dabei, ohne eine andere Sprache zu lernen, aber der Wechsel von einem Framework wie React zu Vue ist viel einfacher, da beides JavaScript ist.

Werbung

Wenn Sie keine Web-App erstellen, benötigen Sie Node wahrscheinlich nicht. Es ist nicht für statische Seiten gedacht. Das können Sie sicherlich, aber Sie werden keinen großen Nutzen sehen. Wenn Sie vorhaben, ein vollständiges Web-Framework wie React für eine statische (oder sogar überwiegend statische) Site zu verwenden, sollten Sie es sich vielleicht noch einmal überlegen, da React Ihrer Site viel Overhead einbringt. Ohne serverseitiges Rendering sind die Reaktionsladezeiten im Allgemeinen viel langsamer, was für Webanwendungen, die für lange Sitzungsdauern ausgelegt sind, in Ordnung ist, aber nicht für einen Blog oder etwas, das nach guter SEO sucht. Vanilla JS kann selbst eine Menge DOM-Manipulationen durchführen, insbesondere mit Hilfe von jQuery.