Deno JavaScript platvorm toetab NPM mooduleid

Välja on antud Deno 1.28, platvorm isoleeritud JavaScripti ja TypeScripti rakenduste käitamiseks, mida saab kasutada serveripoolsete töötlejate loomisel. Platvormi arendab Ryan Dahl, Node.js looja. Nagu Node.js, kasutab Deno JavaScripti V8 mootorit, mida kasutatakse ka Chromiumi baasil põhinevates brauserites. Siiski, Deno ei ole Node.js haru, vaid nullist loodud uus projekt. Projekti kood on litsentseeritud MIT litsentsi alusel. Kompileeritud versioonid on saadaval Linuxile, Windowsile ja macOS-ile.

Deno projekt on loodud pakkuma kasutajatele turvalisemat keskkonda ning kõrvaldab Node.js arhitektuuris tehtud kontseptuaalsed vead. Turvalisuse suurendamiseks on V8 mootori ümber kirjutatud Rusti keeles, et vältida paljusid madala taseme mälu haldamisega seotud haavatavusi. Taotluste töötlemiseks kasutatakse mittesünkroneeritud platvormi Tokio, mis on samuti kirjutatud Rusti keeles. Tokio võimaldab luua kõrge jõudlusega rakendusi, mis põhinevad sündmustele orienteeritud arhitektuuril (Event-driven), toetades mitme niidi kasutamist ja asünkroonset võrgu taotluste töötlemist.

Uues väljaandes on peamine muudatus NPM-i hoidlas paiknevaid pakette toetava ühilduvuse stabiliseerimine, mis võimaldab kasutada Deno-s üle 1.3 miljoni Node.js platvormile loodud mooduli. Näiteks on Deno-põhistes rakendustes nüüd võimalik kasutada selliseid mooduleid andmete pideva juurdepääsu korraldamiseks nagu Prisma, Mongoose ja MySQL, samuti esiplaani tööks mõeldud raamistikke nagu React ja Vue. Mõned NPM-moodulid jäävad Deno-ga siiski ühilduvaks, näiteks Node.js keskkonna spetsiifiliste elementide, näiteks package.json-faili, külge sidumise tõttu. Samuti ei ole veel võimalik kasutada käsku „deno compile“ NPM-moodulitega. Tulevastes väljaannetes on kavas sellised ühilduvus- ja piiranguprobleemid lahendada.

Deno mudeleid ja Web API-d toetava eelneva mudeli tugi on säilinud samal tasemel ja NPM-moodulite importimiseks kasutatakse Deno-le tuttavat URL-põhist laadimisskeemi. NPM-moodulitele pääsemiseks on ette nähtud spetsiaalne URL-eelprefix "npm:", mida saab kasutada nagu tavapäraste Deno moodulite puhul. Näiteks NPM-mooduli importimiseks võib kirjutada 'import { chalk } from "npm:chalk@5";', ja NPM-skripti kävitamiseks käsurealt — 'deno run —allow-env —allow-read npm:create-vite-extra'.

NPM-pakettide kasutamine Deno-s on oluliselt lihtsam kui Node.js-s, kuna modude eelinstallimist ei ole vajalik (moodulid installitakse rakenduse esimesel käivitamisel), package.json faili ei kasutata ning vaikimisi ei kasutata ka node_modules katalooge (moodulid vahetatakse üldises kataloogis, kuid vana käitumise taasalustamiseks on olemas võimalus valiku "—node-modules-dir" kaudu).

NPM-põhistes rakendustes säilitab Deno võimaluse kasutada juurdepääsuhaldust, isoleerimist ja võimalikku turvalisuse aktiveerimist. Rünnakute vältimiseks kaheldavate sõltuvuste kaudu blokeerib Deno vaikimisi kõik katsed süsteemi juurde pääseda, teavitades tuvastatud probleemidest. Näiteks kui moodul püüab kirjutamiseks pääseda /usr/bin/, kuvatakse selle toimingu kinnitamise küsimus: deno run npm:install-malware ⚠️ ┌ Deno palub kirjutamisõigust /usr/bin/. ├ Küsitakse `install-malware` poolt ├ Käivita uuesti —allow-write, et sellest teatisest mööda minna. └ Lubada? [y/n] (y = jah, luba; n = ei, keela) >

Uues versioonis on Deno täiustustes mainitud mitte seotud NPM-i rikkaid uuendusi, sealhulgas V8 mootori värskendust versioonini 10.9, automaatset blokeerimisfailide määramist, API stabiliseerimist Deno.bench(), Deno.gid(), Deno.networkInterfaces(), Deno.systemMemoryInfo() ja Deno.uid(), samuti Deno.Command() uue katse API lisamist, et käivitada käske (üldine asendus Deno.spawn, Deno.spawnSync ja Deno.spawnChild).

Deno peamised omadused:

  • Turvalisuse orientatsioon vaikeseadetes. Failide juurde pääs, võrguvõimalused ja keskkonnamuutujate ale on vaikimisi blokeeritud ning vajavad selgelt lubamist. Vaikesed rakendused käivituvad isoleeritud liivakasti keskkondades ega pääse süsteemi funktsioonidele ligi ilma selgete volituste andmiseta;
  • Sisseehitatud TypeScripti keele tugi JavaScripti kõrval. Tüüpide kontrollimiseks ja JavaScripti genereerimiseks kasutatakse standardset TypeScripti kompilaatorit, mis põhjustab jõudluse languse võrreldes JavaScripti käsitsi analüüsimisega V8-s;
  • Jooksepikendused esitatakse ühtse iseseisva käideldava faili („deno”) kujul. Rakenduste käivitamiseks Deno abil piisab, kui laadida alla platvormile sobiv käideldav fail, mis on umbes 30 MB suurune, ilma väliste sõltuvusteta ning ei vaja mingit erilist süsteemi installimist. Deno ei ole monoliitne rakendus, vaid sisaldab Rustis kirjutatud crate-pakettide kogumit (deno_core, rusty_v8), mida saab kasutada eraldi;
  • Programmi käivitamisel ning moodulite laadimisel saab kasutada URL-ide kaudu aadresse. Näiteks, et käivitada programmi welcome.js, võib kasutada käsku «deno https://deno.land/std/examples/welcome.js». Välisest allikast saadud kood laaditakse ja vahemälustatakse kohalikus süsteemis, kuid ei uuendata automaatselt (uuendamiseks on vajalik rakendus selgelt käivitada lipuga «—reload»);
  • Tõhus HTTP-päringute töötlemine rakendustes, platvorm on suunatud kõrge jõudlusega võrgu rakenduste loomisele;
  • Võimalus luua universaalseid veebi rakendusi, mis saavad töötada nii Deno-s kui ka tavapärases veebi brauseris;
  • Standardsete moodulite olemasolu, mille kasutamine ei nõua väliste sõltuvuste sidumist. Standardkollektsiooni moodulid on läbinud täiendava auditi ja ühilduvuse kontrolli;
  • Lisaks runtime'ile täidab Deno platvorm ka paketihalduri rolli ja võimaldab koodis moodulite juurde pääseda URL-ide kaudu. Näiteks saab mooduli laadimiseks koodis märkida "import * as log from 'https://deno.land/std/log/mod.ts'". Väliste URL-ide kaudu laaditud failid serverite vahemälustatakse. Moodulite versioonide sidumine toimub URL-is versiooninumbrite näidete kaudu, näiteks 'https://unpkg.com/liltest@0.0.5/dist/liltest.js';
  • Integreeritud süsteem sõltuvuste inspektsiooniks (käsk 'deno info') ja koodi vormindamise utiliit (deno fmt);
  • Kõik rakenduse skriptid saavad olla ühendatud üheks JavaScripti failiks.

Allikas: opennet.ru

Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster