Deno JavaScripti platvorm ühildub NPM-moodulitega

Välja on antud Deno 1.28, raamistik JavaScripti ja TypeScripti rakenduste liivakastimiseks, mida saab kasutada serveripoolsete töötlejate loomiseks. Platvormi arendab Ryan Dahl, Node.js looja. Nagu Node.js, kasutab Deno V8 JavaScripti mootorit, mida kasutatakse ka Chromiumipõhistes brauserites. Samas ei ole Deno Node.js’i kahvel, vaid on uus nullist loodud projekt. Projekti koodi levitatakse MIT litsentsi all. Järgud on ette valmistatud Linuxi, Windowsi ja macOS-i jaoks.

Deno projekt loodi selleks, et pakkuda kasutajatele turvalisemat keskkonda ja kõrvaldada Node.js arhitektuuri kontseptuaalsed vead. Turvalisuse parandamiseks on V8 mootor kirjutatud Rust keeles, mis väldib paljusid nõrku kohti, mis tulenevad madala tasemega mäluga manipuleerimisest. Päringute töötlemiseks mitteblokeerivas režiimis kasutatakse Tokio platvormi, mis on samuti kirjutatud Rust keeles. Tokio võimaldab teil luua suure jõudlusega rakendusi, mis põhinevad sündmustepõhisel arhitektuuril, toetades mitme lõimega töötlemist ja võrgupäringute töötlemist asünkroonses režiimis.

Peamine muudatus uues versioonis on ühilduvuse stabiliseerimine NPM-i hoidlas majutatud pakettidega, mis võimaldab Denol kasutada enam kui 1.3 miljonit Node.js platvormi jaoks loodud moodulit. Näiteks saavad Deno-põhised rakendused nüüd kasutada püsivaid andmetele juurdepääsu mooduleid, nagu Prisma, Mongoose ja MySQL, aga ka esiotsa raamistikke, nagu React ja Vue. Mõned NPM-moodulid jäävad endiselt Denoga ühildumatuks, näiteks seoste tõttu Node.js-spetsiifiliste keskkonnaelementidega, nagu fail package.json. Samuti ei ole veel võimalik kasutada käsku "deno compile" NPM moodulitega. Tulevaste väljaannete eesmärk on lahendada need vastuolud ja piirangud.

Deno varem kasutatud ECMAScripti moodulisüsteemi ja Web API mudeli tugi säilib samal tasemel ning NPM-moodulite importimiseks kasutatakse Deno tuttavat URL-ipõhist laadimisskeemi. NPM-moodulitele juurdepääsuks on spetsiaalne URL-i eesliide “npm:”, mida saab kasutada samamoodi nagu tavalisi Deno mooduleid. Näiteks NPM-mooduli importimiseks saate määrata käsu „import { chalk } from "npm:chalk@5";' ja käivitada NPM-skript käsurealt - "deno run --allow-env --allow -loe npm:loo- vite-extra.

NPM-pakettide kasutamine Denos on palju lihtsam kui Node.js-is, kuna pole vaja mooduleid eelinstallida (moodulid installitakse rakenduse esmakordsel käivitamisel), puudub fail package.json ja vaikimisi node_modules kataloog (moodulid on vahemällu salvestatud jagatud kataloogis, kuid vana käitumist on võimalik tagastada, kasutades valikut “--node-modules-dir”).

NPM-põhised rakendused säilitavad võimaluse kasutada Deno juurdepääsukontrolli, isolatsiooni ja turbetundlikke täiustatud võimalusi. Küsitavate sõltuvuste kaudu rünnakute vastu võitlemiseks blokeerib Deno vaikimisi kõik katsed pääseda süsteemile sõltuvustest ja kuvab hoiatuse tuvastatud probleemide kohta. Näiteks kui moodul proovib saada kirjutusõigust /usr/bin/, kuvatakse selle toimingu kinnitustaotlus: deno run npm:install-malware ⚠️ ┌ Deno taotleb kirjutamisõigust /usr/bin/. ├ Soovib "install-malware" ├ Käivitage uuesti käsuga --allow-write, et sellest viipast mööda minna. └ Kas lubada? [y/n] (y = jah, luba; n = ei, keela) >

Uue versiooni mitte-NPM-i täiustused hõlmavad V8 mootori värskendamist versioonile 10.9, lukkudega failide automaatset tuvastamist, Deno.bench(), Deno.gid(), Deno.networkInterfaces(), Deno.systemMemoryInfo() stabiliseerimist. ja Deno API-d. .uid(), lisades uue ebastabiilse API Deno.Command() käskude käitamiseks (universaalne asendus Deno.spawn, Deno.spawnSync ja Deno.spawnChild).

Deno peamised omadused:

  • Turvalisusele orienteeritud vaikekonfiguratsioon. Juurdepääs failidele, võrkude loomine ja juurdepääs keskkonnamuutujatele on vaikimisi keelatud ja need peavad olema selgesõnaliselt lubatud. Rakendused töötavad vaikimisi isoleeritud liivakastikeskkondades ega pääse süsteemi võimalustele juurde ilma selgesõnalisi õigusi andmata;
  • Sisseehitatud tugi TypeScriptile peale JavaScripti. Tüübikontrolliks ja JavaScripti genereerimiseks kasutatakse standardset TypeScripti kompilaatorit, mis toob kaasa jõudluse languse võrreldes JavaScripti parsimisega V8-s;
  • Käitusaeg on ühe iseseisva käivitatava faili (“deno”) kujul. Deno abil rakenduste käivitamiseks peate lihtsalt oma platvormi jaoks alla laadima ühe käivitatava faili, mille suurus on umbes 30 MB, millel pole väliseid sõltuvusi ja mis ei vaja süsteemi spetsiaalset installimist. Veelgi enam, deno ei ole monoliitne rakendus, vaid on Rust crate pakettide kogum (deno_core, rusty_v8), mida saab kasutada eraldi;
  • Programmi käivitamisel ja ka moodulite laadimisel saate kasutada URL-i adresseerimist. Näiteks programmi welcome.js käivitamiseks võite kasutada käsku "deno https://deno.land/std/examples/welcome.js". Välistest ressurssidest pärit kood laaditakse alla ja salvestatakse kohalikus süsteemis vahemällu, kuid seda ei värskendata kunagi automaatselt (värskendamiseks on vaja rakendust selgesõnaliselt käivitada lipuga "--reload");
  • Võrgupäringute tõhus töötlemine HTTP kaudu rakendustes; platvorm on mõeldud suure jõudlusega võrgurakenduste loomiseks;
  • Võimalus luua universaalseid veebirakendusi, mida saab käivitada nii Denos kui ka tavalises veebibrauseris;
  • Standardse moodulite komplekti olemasolu, mille kasutamine ei nõua sidumist väliste sõltuvustega. Standardkogu moodulid on läbinud täiendava auditi ja ühilduvuse testimise;
  • Lisaks käitusajale toimib Deno platvorm ka paketihaldurina ja võimaldab moodulitele ligi pääseda koodi sees oleva URL-i kaudu. Näiteks mooduli laadimiseks saate määrata koodis "import * logina aadressilt "https://deno.land/std/log/mod.ts". Välistest serveritest URL-i kaudu alla laaditud failid salvestatakse vahemällu. Mooduli versioonidega sidumine määratakse URL-is versiooninumbrite määramisega, näiteks „https://unpkg.com/[meiliga kaitstud]/dist/liltest.js";
  • Struktuur sisaldab integreeritud sõltuvuskontrollisüsteemi (käsk "deno info") ja koodi vormindamise utiliiti (deno fmt);
  • Kõik rakenduse skriptid saab ühendada üheks JavaScripti failiks.

Allikas: opennet.ru

Lisa kommentaar