The JavaScript platform Deno has ensured compatibility with NPM modules.

Bemutatásra került a Deno 1.28 kiadása, egy platform a JavaScript és TypeScript nyelveken való alkalmazások elkülönített futtatásához, amely kiszolgálóoldali kezelők létrehozására használható. A platformot Ryan Dahl, a Node.js alkotója fejleszti. Ahogyan a Node.js esetében, a Deno is a V8 JavaScript motorra épül, amely szintén a Chromium-alapú böngészőkben található. A Deno azonban nem a Node.js ága, hanem egy teljesen új projektként indult. A projekt kódja MIT licenc alatt érhető el. A fordítások Linuxra, Windowsra és macOS-re készültek.

A Deno projekt célja, hogy a felhasználók számára biztonságosabb környezetet biztosítson, valamint megszüntesse azokat a koncepcionális hibákat, amelyek a Node.js architektúrájában előfordultak. A biztonság javítása érdekében a V8 motor körüli burkolat Rust nyelven készült, lehetővé téve számos, alacsony szintű memória kezelésből adódó sebezhetőség elkerülését. Az aszinkron kérések kiszolgálására a Rust nyelven írt Tokio platformot alkalmazzák. A Tokio lehetővé teszi, hogy eseményvezérelt architektúrára épülő, magas teljesítményű alkalmazásokat készítsenek, amelyek támogatják a többszálúságot és a hálózati kérések aszinkron feldolgozását.

Az új kiadás kulcsfontosságú változása a NPM tárolóban elhelyezett csomagokkal való kompatibilitás stabilizálása, amely lehetővé teszi, hogy a Deno több mint 1,3 millió, a Node.js platformra készült modult használjon. Például a Deno alapú alkalmazásokban mostantól használhatók olyan modulok az adatok állandó elérésének megszervezésére, mint a Prisma, Mongoose és MySQL, valamint a frontend működésének biztosítására szolgáló keretrendszerek, mint a React és Vue. Néhány NPM modul egyelőre továbbra is inkompatibilis a Denóval, például a Node.js-hez specifikus környezeti elemek, mint a package.json fájl miatt. Továbbá a „deno compile” parancs használata NPM modulokkal még nem lehetséges. A jövőbeli kiadásokban az ilyen inkompatibilitások és korlátozások megszüntetését tervezik.

A korábban a Deno-féle ECMAScript modul rendszere és Web API alapján alkalmazott támogatás megmaradt ugyanazon a szinten, és az NPM modulok importálásához a Deno-hoz megszokott URL-alapú betöltési séma használható. Az NPM modulok elérésére egy speciális URL-prefix, a „npm:” áll rendelkezésre, amely a Deno normál moduljaihoz hasonlóan használható. Például, egy NPM modul importálásához meg lehet adni a ‘import { chalk } from „npm:chalk@5”’; parancsot, míg egy NPM script futtatásához a parancssorból a „deno run —allow-env —allow-read npm:create-vite-extra” használható.

Az NPM csomagok használata Deno-ban lényegesen egyszerűbb, mint Node.js-ben, mivel nincs szükség a modulok előzetes telepítésére (a modulok az alkalmazás első indítása során kerülnek telepítésre), nem használják a package.json fájlt, és alapértelmezés szerint a node_modules mappa sem használatos (a modulok egy közös mappában kerülnek gyorsítótárazásra, de lehetőség van a régi viselkedés helyreállítására a „—node-modules-dir” opció segítségével).

Az NPM alapú alkalmazásokban megmarad a Deno által biztosított hozzáférés-elosztási, elszigetelési és biztonságot érintő továbbfejlesztett lehetőségek használata. Az elavult függőségekből fakadó támadások megakadályozására Deno alapértelmezés szerint blokkolja az összes rendszert érintő hozzáférési próbálkozást a függőségekből, és figyelmeztetést ad ki a problémák észleléséről. Például, ha egy modul írási engedélyt kér a /usr/bin/ elérési úton, a következő megerősítést kéri: deno run npm:install-malware ⚠️ ┌ Deno írási hozzáférést kér a /usr/bin/-hoz. ├ Kérte: `install-malware` ├ Futassa újra —allow-write használatával ehhez a kérdéshez. └ Engedélyezni? [y/n] (y = igen, engedélyez; n = nem, tagad)

Az NPM-hez nem kapcsolódó új fejlesztések közül az új verzióban említésre kerül a V8 motor 10.9-es verzióra való frissítése, a zárolt fájlok automatikus azonosítása, a Deno.bench(), Deno.gid(), Deno.networkInterfaces(), Deno.systemMemoryInfo() és Deno.uid() API stabilizálása, valamint az új, instabil Deno.Command() API bevezetése parancsok futtatásához (univerzális helyettesítője a Deno.spawn, Deno.spawnSync és Deno.spawnChild).

A Deno főbb jellemzői:

  • Az alapértelmezett konfiguráció biztonságorientált. A fájlokkal való kapcsolatok, a hálózati lehetőségek és az alapértelmezett környezeti változókhoz való hozzáférés blokkolva van, és kifejezett engedélyezést igényel. Az alapértelmezett alkalmazások izolált sandbox környezetben futnak, és nem férhetnek hozzá a rendszer funkcióihoz kifejezett jogosultságok biztosítása nélkül;
  • A JavaScript mellett a TypeScript nyelv beépített támogatása. A típusellenőrzéshez és JavaScript generálásához a natív TypeScript fordítót használják, ami teljesítménycsökkenést eredményez a JavaScript V8-as elemzéséhez képest;
  • A Deno önálló futtatható fájl formájában érkezik („deno”). A Deno használatával történő alkalmazásindításhoz elegendő letölteni a platformjához tartozó egyetlen, körülbelül 30 MB méretű futtatható fájlt, amely nincsenek külső függőségei, és nem igényel különösebb telepítést. Ezenkívül a deno nem monolitikus alkalmazás, hanem egy Rust alapú crate-csomagok gyűjteménye (deno_core, rusty_v8), amelyeket külön-külön lehet használni;
  • A program indításához, valamint a modulok betöltéséhez URL-alapú címzést lehet használni. Például a welcome.js program elindításához a következő parancsot használhatja: „deno https://deno.land/std/examples/welcome.js”. A külső forrásokból származó kódot letöltik és a helyi rendszeren gyorsítótárazva tárolják, de soha nem frissül automatikusan (frissítéshez kifejezetten el kell indítani az alkalmazást a „—reload” kapcsolóval);
  • Hatékony HTTP hálózati kérések kezelése az alkalmazásokban, a platform a nagy teljesítményű hálózati alkalmazások készítésére lett tervezve;
  • Lehetőség univerzális webalkalmazások létrehozására, amelyek Deno-ban és a hagyományos webböngészőben is futtathatók;
  • Alapvető modulok standard készlete, amelyek használata nem igényel külső függőségekhez való kötődést. A standard gyűjtemény moduljai további auditáláson és kompatibilitási ellenőrzésen estek át;
  • A runtime-on kívül a Deno platform csomagkezelő szerepet is betölt, lehetővé téve a modulok URL-en keresztüli elérését a kódban. Például egy modul betöltéséhez a kódban megadható a következő: „import * as log from „https://deno.land/std/log/mod.ts”. A külső URL-en betöltött fájlok gyorsítótárba kerülnek. szerverek A modulok verziókkal való kötődése a URL-en belül megadott verziószámok által történik, például „https://unpkg.com/liltest@0.0.5/dist/liltest.js”;
  • The integrated system includes a dependency inspection tool (the 'deno info' command) and a code formatting utility (deno fmt);
  • All application scripts can be combined into a single JavaScript file.

Forrás: opennet.ru

Megbízható hosting vásárlása weboldalak számára, DDoS védelemmel, VPS VDS szerverek. 🔥 Megbízható webtárhely vásárlása DDoS védelemmel, VPS VDS szerverek | ProHoster