Die JavaScript-Plattform Deno bietet KompatibilitÀt mit NPM-Modulen.

Die Version Deno 1.28 wurde vorgestellt, eine Plattform fĂŒr die isolierte AusfĂŒhrung von Anwendungen in JavaScript und TypeScript, die zur Erstellung von serverseitigen Handhabungen verwendet werden kann. Die Plattform wird von Ryan Dahl, dem Schöpfer von Node.js, entwickelt. Wie auch in Node.js verwendet Deno die JavaScript-Engine V8, die auch in Chromium-basierten Browsern zum Einsatz kommt. Deno ist jedoch kein Fork von Node.js, sondern ein von Grund auf neues Projekt. Der Code des Projekts wird unter der MIT-Lizenz veröffentlicht. Die Builds sind fĂŒr Linux, Windows und macOS vorbereitet.

Das Deno-Projekt wurde gegrĂŒndet, um den Nutzern eine sicherere Umgebung zu bieten und konzeptionelle Fehler in der Architektur von Node.js zu beseitigen. Um die Sicherheit zu erhöhen, ist die Wrapper-Schicht um die V8-Engine in der Programmiersprache Rust geschrieben, die viele der durch low-level Speicherarbeit entstehenden Schwachstellen vermeidet. FĂŒr die Verarbeitung von Anfragen im nicht-blockierenden Modus wird die Tokio-Plattform verwendet, die ebenfalls in Rust geschrieben ist. Tokio ermöglicht die Erstellung von hochleistungsfĂ€higen Anwendungen auf Basis einer ereignisgesteuerten Architektur (Event-driven), die Multithreading und die asynchrone Verarbeitung von Netzwerk-Anfragen unterstĂŒtzt.

Das wichtigste Änderungsmerkmal in der neuen Version ist die Stabilisierung der KompatibilitĂ€t mit Paketen, die im NPM-Repository gehostet werden, was die Nutzung von mehr als 1,3 Millionen Modulen in Deno ermöglicht, die fĂŒr die Node.js-Plattform erstellt wurden. Zum Beispiel können in Deno-Anwendungen jetzt Module verwendet werden, die einen dauerhaften Datenzugriff ermöglichen, wie Prisma, Mongoose und MySQL, sowie Frameworks zur UnterstĂŒtzung von Frontends wie React und Vue. Einige NPM-Module bleiben derzeit inkompatibel mit Deno, zum Beispiel aufgrund von Bindungen an Node.js-spezifische Umgebungsmerkmale, wie die Datei package.json. Außerdem ist es derzeit nicht möglich, den Befehl „deno compile“ mit NPM-Modulen zu verwenden. In zukĂŒnftigen Versionen ist geplant, solche InkompatibilitĂ€ten und EinschrĂ€nkungen zu beseitigen.

Die UnterstĂŒtzung des zuvor in Deno verwendeten Modells basierend auf dem ECMAScript-Modulsystem und der Web-API bleibt auf demselben Niveau erhalten, und fĂŒr den Import von NPM-Modulen wird das fĂŒr Deno gewohnte URL-basierte Ladeschema verwendet. FĂŒr den Zugriff auf NPM-Module gibt es ein spezielles URL-PrĂ€fix „npm:“, das analog zu den ĂŒblichen Deno-Modulen verwendet werden kann. Zum Beispiel kann beim Import eines NPM-Moduls angegeben werden: 'import { chalk } from "npm:chalk@5";', und um ein NPM-Skript ĂŒber die Befehlszeile auszufĂŒhren — „deno run —allow-env —allow-read npm:create-vite-extra“.

Die Verwendung von NPM-Paketen in Deno ist deutlich einfacher als in Node.js, da keine vorherige Installation der Module erforderlich ist (Module werden beim ersten Start der Anwendung installiert), keine package.json-Datei verwendet wird und standardmĂ€ĂŸig auch kein node_modules-Verzeichnis verwendet wird (Module werden in einem gemeinsamen Verzeichnis zwischengespeichert, aber es besteht die Möglichkeit, das alte Verhalten mithilfe der Option „—node-modules-dir“ wiederherzustellen).

In Anwendungen auf Basis von NPM bleibt die Möglichkeit erhalten, die von Deno bereitgestellten Mechanismen zum Zugriffsschutz, zur Isolation und zur Aktivierung sicherheitsrelevanter erweiterter Funktionen zu nutzen. Um gegen Angriffe ĂŒber verdĂ€chtige AbhĂ€ngigkeiten vorzugehen, blockiert Deno standardmĂ€ĂŸig alle Versuche, von AbhĂ€ngigkeiten aus auf das System zuzugreifen, und gibt Warnmeldungen ĂŒber festgestellte Probleme aus. Zum Beispiel wird bei einem Versuch eines Moduls, Schreibzugriff auf /usr/bin/ zu erhalten, eine BestĂ€tigungsanfrage fĂŒr diese Operation ausgegeben: deno run npm:install-malware ⚠ ┌ Deno fordert Schreibzugriff auf /usr/bin/ an. ├ Angefordert von `install-malware` ├ FĂŒhren Sie erneut mit —allow-write aus, um diese Aufforderung zu umgehen. └ Erlauben? [y/n] (y = ja, erlauben; n = nein, ablehnen) >

Unter den nicht mit NPM verbundenen Verbesserungen in der neuen Version wird das Upgrade des V8-Engines auf Version 10.9, die automatische Erkennung von Sperrdateien, die Stabilisierung der APIs Deno.bench(), Deno.gid(), Deno.networkInterfaces(), Deno.systemMemoryInfo() und Deno.uid() sowie die EinfĂŒhrung der neuen instabilen API Deno.Command() zur AusfĂŒhrung von Befehlen (universeller Ersatz fĂŒr Deno.spawn, Deno.spawnSync und Deno.spawnChild) erwĂ€hnt.

Die Hauptmerkmale von Deno:

  • Sicherheitsorientierung in der Standardkonfiguration. Zugriffe auf Dateien, Netzwerkfunktionen und Zugriff auf Umgebungsvariablen sind standardmĂ€ĂŸig blockiert und erfordern eine explizite Aktivierung. Standardanwendungen werden in isolierten Sandbox-Umgebungen ausgefĂŒhrt und haben keinen Zugriff auf Systemfunktionen ohne ausdrĂŒckliche Berechtigung;
  • Integrierte UnterstĂŒtzung der Programmiersprache TypeScript zusĂ€tzlich zu JavaScript. Der integrierte TypeScript-Compiler wird zur TypprĂŒfung und zur Generierung von JavaScript verwendet, was zu einem LeistungsrĂŒckgang im Vergleich zur JavaScript-Analyse in V8 fĂŒhrt;
  • Die Runtime wird als eine einzige eigenstĂ€ndige ausfĂŒhrbare Datei („deno“) bereitgestellt. Um Anwendungen mit Deno auszufĂŒhren, reicht es aus, eine rund 30 MB große ausfĂŒhrbare Datei fĂŒr die eigene Plattform herunterzuladen, die keine externen AbhĂ€ngigkeiten hat und keine besondere Installation im System erfordert. Dabei ist Deno keine monolithische Anwendung, sondern eine Sammlung von Rust-Crate-Paketen (deno_core, rusty_v8), die einzeln verwendet werden können;
  • Bei der AusfĂŒhrung des Programms sowie beim Laden von Modulen kann die Adressierung ĂŒber URL verwendet werden. Zum Beispiel kann der Befehl „deno https://deno.land/std/examples/welcome.js“ verwendet werden, um das Programm welcome.js auszufĂŒhren. Code von externen Ressourcen wird heruntergeladen und im lokalen System zwischengespeichert, wird jedoch nie automatisch aktualisiert (fĂŒr ein Update ist es erforderlich, die Anwendung mit dem Flag „—reload“ explizit zu starten);
  • Effiziente Verarbeitung von HTTP-Netzwerkanfragen, die Plattform ist fĂŒr die Erstellung leistungsstarker Netzwerkapplikationen ausgelegt;
  • Die Möglichkeit, universelle Webanwendungen zu erstellen, die sowohl in Deno als auch in einem herkömmlichen Webbrowser ausgefĂŒhrt werden können;
  • Vorhandensein eines Standardmodulsets, dessen Verwendung keine Bindung an externe AbhĂ€ngigkeiten erfordert. Module aus der Standardkollektion wurden zusĂ€tzlich auditiert und auf KompatibilitĂ€t ĂŒberprĂŒft;
  • Neben der Runtime fungiert die Deno-Plattform auch als Paketmanager und erlaubt den Zugriff auf Module innerhalb des Codes ĂŒber URL. Zum Beispiel kann zur Modullieferung im Code angegeben werden „import * as log from "https://deno.land/std/log/mod.ts". Dateien, die von externen Server ĂŒber URL heruntergeladen werden, werden zwischengespeichert. Die Bindung an die Versionen der Module erfolgt ĂŒber die Angabe von Versionsnummern innerhalb der URL, zum Beispiel „https://unpkg.com/liltest@0.0.5/dist/liltest.js“;
  • Das System zur Inspektion von AbhĂ€ngigkeiten (Befehl „deno info“) und das Tool zur Code-Formatierung (deno fmt) sind integriert.
  • Alle Anwendungsskripte können in einer einzigen JavaScript-Datei zusammengefasst werden.

Quelle: opennet.ru

ZuverlĂ€ssiges Hosting fĂŒr Websites mit DDoS-Schutz kaufen, VPS VDS Server đŸ”„ ZuverlĂ€ssiges Hosting fĂŒr Websites mit DDoS-Schutz kaufen, VPS VDS Server - ProHoster