Na platformě Deno v JavaScriptu byla zajištěna kompatibilita s moduly NPM.

Byl uveden Deno 1.28, platforma pro izolované provádění aplikací v jazycích JavaScript a TypeScript, která může být použita k vytváření serverových handlerů. Platformu vyvíjí Ryan Dahl, tvůrce Node.js. Stejně jako v Node.js využívá Deno JavaScriptový engine V8, který se také používá v prohlížečích založených na Chromium. Deno však není odvozeninou od Node.js, ale novým projektem vytvořeným od základů. Kód projektu je distribuován pod licencí MIT. Sestavení jsou připravena pro Linux, Windows a macOS.

Projekt Deno byl vytvořen, aby uživatelům poskytl bezpečnější prostředí a odstranil konceptuální chyby, které byly v architektuře Node.js. Pro zvýšení bezpečnosti byla obalová vrstva okolo V8 engine napsána v jazyce Rust, což umožňuje vyhnout se mnoha zranitelnostem vyplývajícím z nízkoúrovňové práce s pamětí. Pro zpracování požadavků v neblokujícím režimu se používá platforma Tokio, která je také napsána v jazyce Rust. Tokio umožňuje vytvářet vysoce výkonné aplikace založené na událostmi řízené architektuře (Event-driven), které podporují multithreading a asynchronní zpracování síťových požadavků.

Klíčovou změnou v novém vydání je stabilizace kompatibility s balíčky umístěnými v repozitáři NPM, což umožňuje používat v Denu více než 1,3 milionu modulů vytvořených pro platformu Node.js. Například v aplikacích založených na Denu nyní lze používat moduly pro zajištění trvalého přístupu k datům, jako jsou Prisma, Mongoose a MySQL, a také frameworky pro zajištění funkčnosti front-endů, jako jsou React a Vue. Některé moduly NPM zatím zůstávají s Deno nekompatibilní, například kvůli vazbám na prvky specifické pro prostředí Node.js, jako je soubor package.json. Také zatím není možné použít příkaz „deno compile“ s moduly NPM. V budoucích vydáních se plánuje odstranění těchto nekompatibilit a omezení.

Podpora dříve používaného modelu v Deno, založeného na systému modulů ECMAScript a webových API, byla zachována na stejné úrovni a pro import modulů NPM se používá běžné schéma načítání založené na URL. Pro přístup k modulům NPM je k dispozici speciální URL prefix „npm:“, který může být používán analogicky k běžným modulům Deno. Například pro import NPM modulu lze zadat 'import { chalk } from "npm:chalk@5";', a pro spuštění NPM skriptu z příkazové řádky — „deno run —allow-env —allow-read npm:create-vite-extra“.

Používání NPM balíčků v Deno je výrazně jednodušší než v Node.js, protože není nutné předchozí instalování modulů (moduly se instalují při prvním spuštění aplikace), není použit soubor package.json a také není ve výchozím nastavení používán katalog node_modules (moduly jsou ukládány do společného adresáře, ale je možné se vrátit k předchozímu chování pomocí možnosti „—node-modules-dir“).

V aplikacích založených na NPM zůstává možnost využití mechanismů Deno pro řízení přístupu, izolaci a aktivaci rozšířených bezpečnostních funkcí. Aby se zabránilo útokům prostřednictvím pochybných závislostí, Deno ve výchozím nastavení blokuje všechny pokusy o přístup k systému z těchto závislostí a vydává varování o zjištěných problémech. Například při pokusu modulu o zápis do /usr/bin/ se zobrazí žádost o potvrzení této operace: deno run npm:install-malware ⚠️ ┌ Deno requests write access to /usr/bin/. ├ Requested by `install-malware` ├ Run again with —allow-write to bypass this prompt. └ Allow? [y/n] (y = yes, allow; n = no, deny) >

Mezi nesouvisejícími vylepšeními v nové verzi se zmiňuje aktualizace motoru V8 na verzi 10.9, automatické rozpoznávání blokovacích souborů, stabilizace API Deno.bench(), Deno.gid(), Deno.networkInterfaces(), Deno.systemMemoryInfo() a Deno.uid(), přidání nového nestabilního API Deno.Command() pro spouštění příkazů (univerzální náhrada Deno.spawn, Deno.spawnSync a Deno.spawnChild).

Hlavní vlastnosti Deno:

  • Zaměření na bezpečnost v konfiguraci podle výchozího nastavení. Přístupy k souborům, síťové schopnosti a přístup k proměnným prostředí jsou ve výchozím nastavení blokovány a vyžadují explicitní povolení. Aplikace se ve výchozím nastavení spouštějí v izolovaných sandboxových prostředích a nemohou přistupovat k systémovým schopnostem bez udělení jasných oprávnění;
  • Vestavěná podpora jazyka TypeScript vedle JavaScriptu. Pro ověřování typů a generování JavaScriptu je použit nativní TypeScript kompilátor, což vede k poklesu výkonu ve srovnání s analýzou JavaScriptu v V8;
  • Runtime je dodáván jako jediný samostatný spustitelný soubor („deno“). Pro spuštění aplikací pomocí Deno stačí stáhnout pro svou platformu jeden spustitelný soubor o velikosti přibližně 30 MB, který nemá žádné externí závislosti a nevyžaduje žádnou speciální instalaci do systému. Deno však není monolitní aplikace, ale reprezentuje kolekci crate-balíčků v Rustu (deno_core, rusty_v8), které lze používat samostatně;
  • Při spuštění programu a také pro načítání modulů lze použít adresaci přes URL. Například pro spuštění programu welcome.js lze použít příkaz „deno https://deno.land/std/examples/welcome.js“. Kód z externích zdrojů se načítá a ukládá do mezipaměti na místní systém, ale nikdy se automaticky neaktualizuje (pro aktualizaci je nutné explicitně spustit aplikaci s přepínačem „—reload“);
  • Efektivní zpracování síťových požadavků přes HTTP, platforma je navržena pro vytváření vysoce výkonných síťových aplikací;
  • Možnost vytváření univerzálních webových aplikací, které mohou běžet jak v Deno, tak v běžném webovém prohlížeči;
  • Existence standardní sady modulů, jejichž používání nevyžaduje vazby na externí závislosti. Moduly ze standardní kolekce prošly dodatečným auditem a kontrolou kompatibility;
  • Kromě runtime platforma Deno také funguje jako správce balíčků a umožňuje uvnitř kódu odkazovat na moduly pomocí URL. Například pro načtení modulu lze v kódu uvést „import * as log from "https://deno.land/std/log/mod.ts". Soubor, který je načten z externích servery URL, je ukládán do cache. Vazby na verze modulů jsou určovány podle uvedení čísel verzí v URL, například „https://unpkg.com/liltest@0.0.5/dist/liltest.js“;
  • Součástí je také systém pro inspekci závislostí (příkaz „deno info“) a nástroj pro formátování kódu (deno fmt);
  • Všechny skripty aplikace mohou být spojeny do jednoho JavaScriptového souboru.

Zdroj: opennet.ru

Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster