Deno JavaScript plataforma NPM moduluekin bateragarria da

Deno 1.28 kaleratu da, JavaScript eta TypeScript aplikazioak sandboxing-erako markoa, zerbitzariaren aldeko kudeatzaileak sortzeko erabil daitekeena. Plataforma Ryan Dahl-ek garatu du, Node.js-en sortzaileak. Node.js bezala, Denok V8 JavaScript motorra erabiltzen du, Chromium oinarritutako arakatzaileetan ere erabiltzen dena. Aldi berean, Deno ez da Node.js-en sardexka bat, hutsetik sortutako proiektu berria baizik. Proiektuaren kodea MIT lizentziapean banatzen da. Eraikuntzak Linux, Windows eta macOSerako prestatuta daude.

Deno proiektua erabiltzaileei ingurune seguruagoa eskaintzeko eta Node.js arkitekturako akats kontzeptualak ezabatzeko sortu zen. Segurtasuna hobetzeko, V8 motorra Rust-en idatzita dago, eta horrek maila baxuko memoriaren manipulaziotik sortzen diren ahultasun asko saihesten ditu. Eskaerak blokeorik gabeko moduan prozesatzeko, Rust-ez idatzitako Tokio plataforma erabiltzen da. Tokiok errendimendu handiko aplikazioak sortzeko aukera ematen du, gertaerak gidatutako arkitekturan oinarrituta, hari anitzeko hariekin eta sare-eskaerak modu asinkronoan prozesatzeko.

Oharra berriaren funtsezko aldaketa bat NPM biltegian ostatatutako paketeekin bateragarritasuna egonkortzea da, eta horri esker, Denok Node.js plataformarako sortutako 1.3 milioi modulu baino gehiago erabil ditzake. Esate baterako, Deno-n oinarritutako aplikazioek orain Prisma, Mongoose eta MySQL bezalako datu-sarbide iraunkorrak erabil ditzakete, baita React eta Vue bezalako frontend-esparruak ere. NPM modulu batzuk Denorekin bateraezinak izaten jarraitzen dute, adibidez, Node.js-en ingurune espezifikoko elementuekin lotzen direlako, hala nola package.json fitxategia. Oraindik ezin da "deno compile" komandoa erabili NPM moduluekin. Etorkizuneko bertsioek bateraezintasun eta muga horiei aurre egiteko asmoa dute.

Lehen erabilitako Denoren ECMAScript modulu sistemaren eta Web API ereduaren euskarria maila berean mantentzen da, eta Denoren URLetan oinarritutako karga-eskema ezaguna erabiltzen da NPM moduluak inportatzeko. NPM moduluetara sartzeko, "npm:" URL aurrizki berezi bat dago, Deno modulu arrunten modu berean erabil daitekeena. Adibidez, NPM modulu bat inportatzeko, 'inportatu { chalk } "npm:chalk@5"-tik zehaztu dezakezu, eta NPM script bat komando-lerrotik exekutatzeko - "deno run --allow-env --allow -read npm:create- vite-extra.”

Deno-n NPM paketeak erabiltzea Node.js-en baino askoz errazagoa da, ez baitago moduluak aurrez instalatu beharrik (aplikazioa lehen aldiz abiarazten denean moduluak instalatzen dira), ez dago package.json fitxategirik eta ez dago node_modules lehenetsirik. direktorioa (moduluak direktorio partekatuan gordetzen dira, baina posible da portaera zaharra itzultzea "--node-modules-dir" aukera erabiliz).

NPMn oinarritutako aplikazioek Denoren sarbide-kontrola, isolamendua eta segurtasunarekiko sentikorrak diren gaitasun aurreratuak erabiltzeko gaitasuna mantentzen dute. Mendekotasun zalantzazkoen bidez erasoei aurre egiteko, Denok berez blokeatzen ditu mendekotasunetatik sistemara sartzeko saiakera guztiak eta detektatu diren arazoei buruzko abisua erakusten du. Adibidez, modulu bat /usr/bin/-ra idazteko sarbidea lortzen saiatzen denean, eragiketa honen berrespen-eskaera bat bistaratuko da: deno run npm:install-malware ⚠️ β”Œ Deno-k /usr/bin/-ra idazteko sarbidea eskatzen du. β”œ `install-malware`-k eskatuta β”œ Exekutatu berriro --allow-write gonbita hau saihesteko. β”” Baimendu? [y/n] (y = bai, onartu; n = ez, ukatu) >

Bertsio berrian NPM-ak ez diren hobekuntzak, besteak beste, V8 motorra eguneratzea 10.9 askatzeko, blokeoak dituzten fitxategiak automatikoki hautematea, Deno.bench(), Deno.gid(), Deno.networkInterfaces(), Deno.systemMemoryInfo() egonkortzea. eta Deno APIak .uid(), komandoak exekutatzeko Deno.Command() API ezegonkor berriak gehituz (Deno.spawn, Deno.spawnSync eta Deno.spawnChild-en ordezkapen unibertsala).

Denoren ezaugarri nagusiak:

  • Segurtasunera bideratutako konfigurazio lehenetsia. Fitxategien sarbidea, sareak eta ingurune-aldagaietarako sarbidea lehenespenez desgaituta daude eta esplizituki gaituta egon behar dute. Aplikazioak lehenespenez sandbox ingurune isolatuetan exekutatzen dira eta ezin dira sistemaren gaitasunetara sartu baimen esplizituak eman gabe;
  • JavaScript-etik haratago TypeScript-erako laguntza integratua. Motak egiaztatzeko eta JavaScript sortzeko, TypeScript konpiladore estandarra erabiltzen da, eta horrek errendimenduaren jaitsiera dakar V8-n JavaScript analizatzearekin alderatuta;
  • Exekuzio-denbora fitxategi exekutagarri autonomo bakar baten moduan dator ("deno"). Deno erabiliz aplikazioak exekutatzeko, zure plataformarako fitxategi exekutagarri bat deskargatu besterik ez duzu behar, 30 MB ingurukoa, kanpoko menpekotasunik ez duena eta sisteman instalazio berezirik behar ez duena. Gainera, deno ez da aplikazio monolitiko bat, Rust crate paketeen bilduma bat da (deno_core, rusty_v8), bereizita erabil daitekeena;
  • Programa abiaraztean, baita moduluak kargatzeko ere, URL helbidea erabil dezakezu. Adibidez, welcome.js programa exekutatzeko, "deno https://deno.land/std/examples/welcome.js" komandoa erabil dezakezu. Kanpoko baliabideen kodea deskargatu eta cachean gordetzen da sistema lokalean, baina ez da inoiz automatikoki eguneratzen (eguneratzeko, aplikazioa esplizituki exekutatu behar da "--reload" markarekin);
  • Aplikazioetan HTTP bidez sareko eskaeren tratamendu eraginkorra; plataforma errendimendu handiko sareko aplikazioak sortzeko diseinatuta dago;
  • Denon zein ohiko web arakatzaile batean exekuta daitezkeen web aplikazio unibertsalak sortzeko gaitasuna;
  • Modulu multzo estandar baten presentzia, eta horien erabilerak ez du kanpoko menpekotasunekin lotzea eskatzen. Bilduma estandarreko moduluek auditoretza eta bateragarritasun proba osagarriak egin dituzte;
  • Exekuzio-denboraz gain, Deno plataformak paketeen kudeatzaile gisa ere jarduten du eta kodearen barruko URL bidez moduluetara sartzeko aukera ematen du. Adibidez, modulu bat kargatzeko, kodean zehaztu dezakezu "inportatu * "https://deno.land/std/log/mod.ts"-tik erregistro gisa. URL bidez kanpoko zerbitzarietatik deskargatutako fitxategiak cachean gordetzen dira. Moduluaren bertsioekin lotzea URLaren barruan bertsio-zenbakiak zehaztuta zehazten da, adibidez, "https://unpkg.com/[posta elektroniko bidez babestua]/dist/liltest.js";
  • Egiturak mendekotasun-ikuskapen sistema integratua (Β«deno infoΒ» komandoa) eta kodea formateatzeko utilitate bat (deno fmt) barne hartzen ditu;
  • Aplikazio-script guztiak JavaScript fitxategi batean konbina daitezke.

Iturria: opennet.ru

Gehitu iruzkin berria