Das Deno-Projekt entwickelt eine sichere JavaScript-Plattform ähnlich Node.js

Verfügbar Projektfreigabe Gib mir 0.33, das eine Node.js-ähnliche Plattform für die eigenständige Anwendungsausführung in JavaScript und TypeScript bietet, mit der Anwendungen ausgeführt werden können, ohne an einen Browser gebunden zu sein, beispielsweise zum Erstellen von Handlern, die auf dem Server ausgeführt werden. Deno verwendet eine JavaScript-Engine V8, das auch in Node.js und Browsern verwendet wird, die auf dem Chromium-Projekt basieren. Projektnummer vertrieben von unter MIT-Lizenz. Das Projekt wird von Ryan Dahl entwickelt (Ryan Dahl), Schöpfer der Node.js-JavaScript-Plattform.

Eines der Hauptziele bei der Erstellung einer neuen Laufzeit für JavaScript besteht darin, eine sicherere Umgebung bereitzustellen. Um die Sicherheit zu verbessern, ist die V8-Engine in Rust geschrieben, wodurch viele der Schwachstellen vermieden werden, die durch Speichermanipulation auf niedriger Ebene entstehen, wie z. B. After-Free-Zugriff, Nullzeiger-Dereferenzierung und Pufferüberläufe. Die Plattform dient der Bearbeitung von Anfragen im nicht blockierenden Modus Tokyo, ebenfalls in Rust geschrieben. Mit Tokio können Sie leistungsstarke Anwendungen erstellen, die auf einer ereignisgesteuerten Architektur basieren, Multithreading unterstützen und Netzwerkanforderungen im asynchronen Modus verarbeiten.

Haupt- eigenschaften Deno:

  • Sicherheitsorientierte Standardkonfiguration. Dateizugriff, Netzwerk und Zugriff auf Umgebungsvariablen sind standardmäßig deaktiviert und müssen explizit aktiviert werden;
  • Integrierte Unterstützung für die TypeScript-Sprache zusätzlich zu JavaScript;
  • Die Laufzeit liegt in Form einer einzelnen, eigenständigen ausführbaren Datei („deno“) vor. Es reicht aus, Anwendungen mit Deno auszuführen hochladen für seine Plattform eine ausführbare Datei mit einer Größe von etwa 10 MB, die keine externen Abhängigkeiten aufweist und keine spezielle Installation auf dem System erfordert;
  • Beim Starten des Programms sowie beim Laden von Modulen können Sie die URL-Adressierung nutzen. Um beispielsweise das Programm „welcome.js“ auszuführen, können Sie den Befehl „deno https://deno.land/std/examples/welcome.js“ verwenden. Code von externen Ressourcen wird heruntergeladen und auf dem lokalen System zwischengespeichert, aber nie automatisch aktualisiert (die Aktualisierung erfordert die explizite Ausführung der Anwendung mit dem Flag „--reload“);
  • Effiziente Verarbeitung von Netzwerkanfragen über HTTP in Anwendungen; die Plattform ist für die Erstellung leistungsstarker Netzwerkanwendungen konzipiert;
  • Die Möglichkeit, universelle Webanwendungen zu erstellen, die sowohl in Deno als auch in einem normalen Webbrowser ausgeführt werden können;
  • Zusätzlich zur Laufzeit fungiert die Deno-Plattform auch als Paketmanager und ermöglicht den Zugriff auf Module per URL innerhalb des Codes. Um beispielsweise ein Modul zu laden, können Sie im Code „import * as log from „https://deno.land/std/log/mod.ts“ angeben. Über die URL von externen Servern heruntergeladene Dateien werden zwischengespeichert. Die Bindung an Modulversionen wird durch die Angabe von Versionsnummern innerhalb der URL bestimmt, zum Beispiel „https://unpkg.com/“[E-Mail geschützt] /dist/liltest.js";
  • Die Struktur umfasst ein integriertes Abhängigkeitsprüfsystem (den Befehl „deno info“) und ein Dienstprogramm zur Codeformatierung (deno fmt).
  • Für Anwendungsentwickler vorgeschlagen eine Reihe von Standardmodulen, die zusätzlichen Prüfungs- und Kompatibilitätstests unterzogen wurden;
  • Alle Anwendungsskripte können in einer JavaScript-Datei zusammengefasst werden.

Unterschiede zu Node.js:

  • Deno verwendet keinen npm-Paketmanager
    und ist nicht an Repositorys gebunden, Module werden über eine URL oder einen Dateipfad angesprochen und die Module selbst können auf jeder Website platziert werden;

  • Deno verwendet „package.json“ nicht zum Definieren von Modulen;
  • API-Unterschied: Alle asynchronen Aktionen in Deno geben ein Versprechen zurück.
  • Deno erfordert eine explizite Definition aller erforderlichen Berechtigungen für Dateien, Netzwerk- und Umgebungsvariablen;
  • Alle Fehler, die nicht mit Handlern versehen sind, führen zum Abbruch der Anwendung;
  • Deno verwendet das ECMAScript-Modulsystem und unterstützt require() nicht.

Source: opennet.ru

Kommentar hinzufügen