Platforma Deno JavaScript je združljiva z moduli NPM

Izdan je bil Deno 1.28, ogrodje za peskovnik aplikacij JavaScript in TypeScript, ki ga je mogoče uporabiti za ustvarjanje upravljavcev na strani strežnika. Platformo je razvil Ryan Dahl, ustvarjalec Node.js. Tako kot Node.js tudi Deno uporablja motor V8 JavaScript, ki se uporablja tudi v brskalnikih, ki temeljijo na Chromiumu. Hkrati Deno ni fork Node.js, ampak je nov projekt, ustvarjen iz nič. Koda projekta se distribuira pod licenco MIT. Zgradbe so pripravljene za Linux, Windows in macOS.

Projekt Deno je bil ustvarjen, da uporabnikom zagotovi bolj varno okolje in odpravi konceptualne napake v arhitekturi Node.js. Za izboljšanje varnosti je motor V8 napisan v jeziku Rust, ki se izogne ​​številnim ranljivostim, ki izhajajo iz manipulacije pomnilnika na nizki ravni. Za obdelavo zahtevkov v načinu brez blokiranja se uporablja platforma Tokio, ki je prav tako napisana v Rustu. Tokio vam omogoča ustvarjanje visoko zmogljivih aplikacij, ki temeljijo na arhitekturi, ki temelji na dogodkih, podpira večnitnost in obdelavo omrežnih zahtev v asinhronem načinu.

Ključna sprememba v novi izdaji je stabilizacija združljivosti s paketi, ki gostujejo v repozitoriju NPM, kar Denu omogoča uporabo več kot 1.3 milijona modulov, ustvarjenih za platformo Node.js. Na primer, aplikacije, ki temeljijo na Denu, lahko zdaj uporabljajo obstojne module za dostop do podatkov, kot so Prisma, Mongoose in MySQL, kot tudi front-end okvire, kot sta React in Vue. Nekateri moduli NPM še vedno ostajajo nezdružljivi z Deno, na primer zaradi vezav na elemente okolja, specifične za Node.js, kot je datoteka package.json. Prav tako še ni mogoče uporabiti ukaza "deno compile" z moduli NPM. Prihodnje izdaje načrtujejo odpravo teh nezdružljivosti in omejitev.

Podpora za predhodno uporabljen sistem modulov ECMAScript in model spletnega API-ja podjetja Deno je ohranjena na isti ravni, za uvoz modulov NPM pa se uporablja znana shema nalaganja, ki temelji na naslovih URL. Za dostop do modulov NPM obstaja posebna predpona URL »npm:«, ki jo je mogoče uporabiti na enak način kot običajne module Deno. Če želite na primer uvoziti modul NPM, lahko podate 'import {chalk } from "npm:chalk@5";', za zagon skripta NPM iz ukazne vrstice pa - "deno run --allow-env --allow -beri npm:create- vite-extra."

Uporaba paketov NPM v Denu je veliko enostavnejša kot v Node.js, saj ni potrebe po prednamestitvi modulov (moduli so nameščeni ob prvem zagonu aplikacije), ni datoteke package.json in ni privzetih node_modules imenik (moduli so predpomnjeni v imeniku v skupni rabi, vendar je možno vrniti staro vedenje z uporabo možnosti “--node-modules-dir”).

Aplikacije, ki temeljijo na NPM, ohranjajo zmožnost uporabe Denovega nadzora dostopa, izolacije in varnostno občutljivih naprednih zmogljivosti. Za preprečevanje napadov prek vprašljivih odvisnosti Deno privzeto blokira vse poskuse dostopa do sistema iz odvisnosti in prikaže opozorilo o zaznanih težavah. Na primer, ko modul poskuša pridobiti dostop za pisanje v /usr/bin/, bo prikazana zahteva za potrditev te operacije: deno run npm:install-malware ⚠️ ┌ Deno zahteva dostop za pisanje v /usr/bin/. ├ Zahteva `install-malware` ├ Znova zaženite z --allow-write, da obidete ta poziv. └ Dovoliti? [y/n] (y = da, dovoli; n = ne, zavrni) >

Izboljšave, ki niso povezane z NPM, v novi različici vključujejo posodobitev motorja V8 na izdajo 10.9, samodejno zaznavanje datotek z zaklepanji, stabilizacijo Deno.bench(), Deno.gid(), Deno.networkInterfaces(), Deno.systemMemoryInfo() in Deno API-ji. .uid(), ki doda nov nestabilen API Deno.Command() za izvajanje ukazov (univerzalna zamenjava za Deno.spawn, Deno.spawnSync in Deno.spawnChild).

Glavne značilnosti Deno:

  • Varnostno usmerjena privzeta konfiguracija. Dostop do datotek, povezovanje v omrežje in dostop do spremenljivk okolja so privzeto onemogočeni in morajo biti izrecno omogočeni. Aplikacije se privzeto izvajajo v izoliranih okoljih peskovnika in ne morejo dostopati do sistemskih zmogljivosti brez dodelitve izrecnih dovoljenj;
  • Vgrajena podpora za TypeScript poleg JavaScripta. Za preverjanje vrste in generiranje JavaScripta se uporablja standardni prevajalnik TypeScript, kar povzroči padec zmogljivosti v primerjavi z razčlenjevanjem JavaScripta v V8;
  • Runtime je v obliki ene same samostojne izvedljive datoteke (»deno«). Za zagon aplikacij z uporabo Deno morate samo prenesti eno izvedljivo datoteko za vašo platformo, veliko približno 30 MB, ki nima zunanjih odvisnosti in ne zahteva nobene posebne namestitve v sistem. Poleg tega deno ni monolitna aplikacija, ampak je zbirka paketov Rust crate (deno_core, rusty_v8), ki jih je mogoče uporabljati ločeno;
  • Pri zagonu programa in pri nalaganju modulov lahko uporabite naslavljanje URL. Če želite na primer zagnati program welcome.js, lahko uporabite ukaz »deno https://deno.land/std/examples/welcome.js«. Koda iz zunanjih virov se prenese in shrani v predpomnilnik v lokalnem sistemu, vendar se nikoli samodejno ne posodobi (posodabljanje zahteva eksplicitno izvajanje aplikacije z zastavico »--reload«);
  • Učinkovita obdelava omrežnih zahtev prek HTTP v aplikacijah, platforma je zasnovana za ustvarjanje visoko zmogljivih omrežnih aplikacij;
  • Sposobnost ustvarjanja univerzalnih spletnih aplikacij, ki jih je mogoče izvajati tako v Denu kot v običajnem spletnem brskalniku;
  • Prisotnost standardnega nabora modulov, katerih uporaba ne zahteva vezave na zunanje odvisnosti. Moduli iz standardne zbirke so bili podvrženi dodatni reviziji in testiranju združljivosti;
  • Poleg izvajalnega okolja platforma Deno deluje tudi kot upravitelj paketov in omogoča dostop do modulov prek URL-ja znotraj kode. Če želite na primer naložiti modul, lahko v kodi podate »uvoz * kot dnevnik iz »https://deno.land/std/log/mod.ts«. Datoteke, prenesene z zunanjih strežnikov prek URL-ja, so shranjene v predpomnilniku. Vezava na različice modula je določena z navedbo številk različic znotraj URL-ja, na primer »https://unpkg.com/[e-pošta zaščitena]/dist/liltest.js";
  • Struktura vključuje integriran sistem pregledovanja odvisnosti (ukaz »deno info«) in pripomoček za oblikovanje kode (deno fmt);
  • Vse skripte aplikacij je mogoče združiti v eno datoteko JavaScript.

Vir: opennet.ru

Dodaj komentar