Platforma Deno JavaScript je kompatibilná s modulmi NPM

Bol vydaný Deno 1.28, rámec pre sandboxing aplikácií JavaScript a TypeScript, ktorý možno použiť na vytváranie obslužných programov na strane servera. Platformu vyvinul Ryan Dahl, tvorca Node.js. Podobne ako Node.js, aj Deno používa V8 JavaScript engine, ktorý sa používa aj v prehliadačoch založených na Chromium. Zároveň Deno nie je fork Node.js, ale je to nový projekt vytvorený od nuly. Kód projektu je distribuovaný pod licenciou MIT. Zostavy sú pripravené pre Linux, Windows a macOS.

Projekt Deno bol vytvorený s cieľom poskytnúť používateľom bezpečnejšie prostredie a odstrániť koncepčné chyby v architektúre Node.js. Na zlepšenie bezpečnosti je motor V8 napísaný v jazyku Rust, ktorý zabraňuje mnohým zraniteľnostiam, ktoré vznikajú pri manipulácii s pamäťou na nízkej úrovni. Na spracovanie požiadaviek v neblokovanom režime sa používa platforma Tokio, tiež napísaná v jazyku Rust. Tokio vám umožňuje vytvárať vysokovýkonné aplikácie založené na architektúre riadenej udalosťami, podporujúce multi-threading a spracovanie sieťových požiadaviek v asynchrónnom režime.

Kľúčovou zmenou v novom vydaní je stabilizácia kompatibility s balíkmi hostenými v úložisku NPM, čo umožňuje spoločnosti Deno používať viac ako 1.3 milióna modulov vytvorených pre platformu Node.js. Napríklad aplikácie založené na Deno teraz môžu využívať moduly trvalého prístupu k údajom, ako sú Prisma, Mongoose a MySQL, ako aj front-end rámce, ako sú React a Vue. Niektoré moduly NPM stále zostávajú nekompatibilné s Deno, napríklad kvôli väzbám na prvky prostredia špecifické pre Node.js, ako je súbor package.json. Zatiaľ tiež nie je možné použiť príkaz „deno compilovať“ s modulmi NPM. Budúce vydania plánujú riešiť tieto nekompatibility a obmedzenia.

Podpora pre predtým používaný systém modulov ECMAScript spoločnosti Deno a model webového rozhrania API je zachovaná na rovnakej úrovni a na import modulov NPM sa používa známa schéma načítania podľa adresy URL spoločnosti Deno. Na prístup k modulom NPM existuje špeciálna predpona URL „npm:“, ktorú možno použiť rovnakým spôsobom ako bežné moduly Deno. Napríklad, ak chcete importovať modul NPM, môžete zadať 'import { krieda } z "npm:chalk@5";' a spustiť skript NPM z príkazového riadku - "deno run --allow-env --allow -čítaj npm:create- vite-extra.“

Používanie balíkov NPM v Deno je oveľa jednoduchšie ako v Node.js, pretože nie je potrebné predinštalovať moduly (moduly sa inštalujú pri prvom spustení aplikácie), neexistuje súbor package.json a neexistuje žiadny predvolený node_modules adresára (moduly sú uložené v zdieľanom adresári, ale je možné vrátiť staré správanie pomocou voľby „--node-modules-dir“).

Aplikácie založené na NPM si zachovávajú možnosť využívať pokročilé funkcie riadenia prístupu, izolácie a zabezpečenia citlivé od spoločnosti Deno. Aby sa zabránilo útokom prostredníctvom pochybných závislostí, Deno predvolene blokuje všetky pokusy o získanie prístupu do systému zo závislostí a zobrazuje varovanie o zistených problémoch. Napríklad, keď sa modul pokúsi získať prístup k zápisu do /usr/bin/, zobrazí sa požiadavka na potvrdenie tejto operácie: deno run npm:install-malware ⚠️ ┌ Deno požaduje prístup k zápisu do /usr/bin/. ├ Vyžaduje `install-malware` ├ Spustite znova s ​​--allow-write, aby ste túto výzvu obišli. └ Povoliť? [y/n] (y = áno, povoliť; n = nie, zamietnuť) >

Vylepšenia, ktoré nie sú NPM v novej verzii, zahŕňajú aktualizáciu motora V8 na vydanie 10.9, automatickú detekciu súborov so zámkami, stabilizáciu Deno.bench(), Deno.gid(), Deno.networkInterfaces(), Deno.systemMemoryInfo() a Deno APIs. .uid(), ktoré pridávajú nové nestabilné API Deno.Command() na spúšťanie príkazov (univerzálna náhrada za Deno.spawn, Deno.spawnSync a Deno.spawnChild).

Hlavné vlastnosti Deno:

  • Predvolená konfigurácia orientovaná na bezpečnosť. Prístup k súborom, sieť a prístup k premenným prostredia sú predvolene zakázané a musia byť explicitne povolené. Aplikácie sa štandardne spúšťajú v izolovaných prostrediach karantény a nemajú prístup k funkciám systému bez udelenia výslovných povolení;
  • Zabudovaná podpora pre TypeScript nad rámec JavaScriptu. Na kontrolu typu a generovanie JavaScriptu sa používa štandardný kompilátor TypeScript, čo vedie k poklesu výkonu v porovnaní s analýzou JavaScriptu vo V8;
  • Runtime prichádza vo forme jedného samostatného spustiteľného súboru („deno“). Na spustenie aplikácií pomocou Deno si stačí stiahnuť jeden spustiteľný súbor pre vašu platformu s veľkosťou približne 30 MB, ktorý nemá žiadne externé závislosti a nevyžaduje žiadnu špeciálnu inštaláciu do systému. Navyše, deno nie je monolitická aplikácia, ale je to kolekcia balíkov Rust crate (deno_core, rusty_v8), ktoré je možné použiť samostatne;
  • Pri spúšťaní programu, ako aj pri načítavaní modulov môžete použiť URL adresu. Napríklad na spustenie programu welcome.js môžete použiť príkaz „deno https://deno.land/std/examples/welcome.js“. Kód z externých zdrojov sa stiahne a uloží do vyrovnávacej pamäte v lokálnom systéme, ale nikdy sa automaticky neaktualizuje (aktualizácia vyžaduje explicitné spustenie aplikácie s príznakom „--reload“);
  • Efektívne spracovanie sieťových požiadaviek cez HTTP v aplikáciách, platforma je určená na vytváranie vysokovýkonných sieťových aplikácií;
  • Schopnosť vytvárať univerzálne webové aplikácie, ktoré je možné spúšťať v Deno aj v bežnom webovom prehliadači;
  • Prítomnosť štandardnej sady modulov, ktorých použitie nevyžaduje väzbu na externé závislosti. Moduly zo štandardnej kolekcie prešli dodatočným auditom a testovaním kompatibility;
  • Platforma Deno funguje okrem runtime aj ako správca balíkov a umožňuje vám pristupovať k modulom podľa URL v kóde. Napríklad na načítanie modulu môžete zadať v kóde „import * ako denník z „https://deno.land/std/log/mod.ts“. Súbory stiahnuté z externých serverov cez URL sa ukladajú do vyrovnávacej pamäte. Väzba na verzie modulu je určená uvedením čísel verzií vo vnútri adresy URL, napríklad „https://unpkg.com/[chránené e-mailom]/dist/liltest.js";
  • Štruktúra zahŕňa integrovaný systém kontroly závislostí (príkaz „deno info“) a nástroj na formátovanie kódu (deno fmt);
  • Všetky aplikačné skripty je možné spojiť do jedného súboru JavaScript.

Zdroj: opennet.ru

Pridať komentár