Tutvustatakse Deno 1.28 vÀljalaset, platvormi JavaScripti ja TypeScripti rakenduste eraldatud kÀitamiseks, mida saab kasutada serveripoolsete kÀitlejate loomiseks. Platvormi arendab Ryan Dahl, Node.js looja. Nagu Node.js, kasutab Deno JavaScripti mootorit V8, mida rakendatakse ka Chromiumi pÔhiste brauserite puhul. Siiski ei ole Deno Node.js haru, vaid tÀiesti uuena loodud projekt. Projekti kood on litsenseeritud MIT litsentsi alusel. Ehitatud versioonid on saadaval Linuxi, Windowsi ja macOS-i jaoks.
Deno projekt loodi, et pakkuda kasutajatele turvalisemat keskkonda ja kĂ”rvaldada Node.js arhitektuuris esinenud kontseptsiooniprogresse. Turvalisuse suurendamiseks on V8 mootori ĂŒmber kirjutatud Rusti keeles, mis aitab vĂ€ltida paljusid haavatavusi, mis tulenevad madala taseme mĂ€lu haldamisest. Taotluste töötlemiseks mittesĂŒnkroonse reĆŸiimi puhul kasutatakse Rusti keeles kirjutatud Tokio platvormi. Tokio vĂ”imaldab luua kĂ”rge jĂ”udlusega sĂŒndmustele orienteeritud arhitektuuril pĂ”hinevaid rakendusi, mis toetavad mitme lĂ”ime ja vĂ”rgu pĂ€ringute asĂŒnkroonset töötlemist.
Uue versiooni vĂ”tmeuuenduseks on stabiliseerida ĂŒhilduvus pakettidega, mis on salvestatud NPM-i hoidlas, mis vĂ”imaldab Deno-s kasutada ĂŒle 1,3 miljoni mooduli, mis on loodud Node.js platvormile. NĂ€iteks saab Deno rakendustes nĂŒĂŒd kasutada jĂ€rgmisi mooduleid pideva andmejuurdepÀÀsu korraldamiseks, nagu Prisma, Mongoose ja MySQL, samuti frontendide töö tagamiseks mĂ”eldud raamistikke, nagu React ja Vue. MĂ”ned NPM moodulid jÀÀvad siiski Deno-ga ĂŒhilduvaks, nĂ€iteks Node.js keskkonnale spetsiifiliste elementide, nagu package.json faili, sidumise tĂ”ttu. Samuti ei ole hetkel vĂ”imalik kasutada kĂ€sku "deno compile" NPM moodulite puhul. Tulevastes vĂ€ljalasketes on plaanis sellised ĂŒhilduvuse ja piirangute probleemid kĂ”rvaldada.
Deno sĂ€ilitab toetuse varasemalt kasutatud ECMAScripti modulaarsete sĂŒsteemide ja Web API mudelile samal tasemel ning NPM-moodulite importimiseks kasutatakse Deno-le tuttavat URL-pĂ”hist laadimisskeemi. NPM-moodulite kĂ€sitlemiseks on ette nĂ€htud eriline URL-eelsĂ”na ânpm:â, mida saab kasutada sarnaselt tavapĂ€raste Deno-moodulitega. NĂ€iteks NPM-mooduli importimiseks vĂ”ib kirjutada âimport { chalk } from ânpm:chalk@5â;â, ning NPM-skripti kĂ€ivitamiseks kĂ€surealt â âdeno run âallow-env âallow-read npm:create-vite-extraâ.
NPM-pakettide kasutamine Deno-s on oluliselt lihtsam kui Node.js-is, kuna ei ole vaja moodulite eelinstallimist (moodulid installitakse esmakordsel rakenduse kĂ€ivitamisel), package.json faili ei kasutata, samuti ei kasutata vaikimisi katalooge node_modules (moodulid vahemĂ€llu salvestatakse, kuid vana kĂ€itumise taastamiseks on vĂ”imalik kasutada valikut âânode-modules-dirâ).
NPM-pĂ”histe rakenduste hulgas sĂ€ilib Deno pakutud juurdepÀÀsu ahendamise, isolatsiooni ning turvalisuse laiendamise mehhanismide kasutamise vĂ”imalus. Kahtlaste sĂ”ltuvuste kaudu rĂŒnnakute ennetamiseks blokeerib Deno vaikimisi kĂ”ik katsed sĂŒsteemile juurdepÀÀsu saada sĂ”ltuvuste kaudu ja annab hoiatusi tuvastatud probleemide kohta. NĂ€iteks, kui moodul ĂŒritab kirjutada /usr/bin/ kausta, esitatakse kinnitustaotlus: deno run npm:install-malware â ïž â Deno kĂŒsib kirjutamisĂ”igust /usr/bin/. â KĂŒside 'install-malware' â KĂ€ivita uuesti âallow-write valikuga, et see kĂŒsimus ĂŒle hĂŒpata. â Kas lubada? [y/n] (y = jah, luba; n = ei, keela) >
NPM-iga mitteseotud uuendustest uues versioonis mainitakse V8 mootori vĂ€rskendust versioonile 10.9, automaatset lukustatud failide tuvastamist, Deno.bench(), Deno.gid(), Deno.networkInterfaces(), Deno.systemMemoryInfo() ja Deno.uid() API-de stabiliseerimist ning uue ebastabiilse Deno.Command() API lisamist kĂ€skude kĂ€ivitamiseks (ĂŒldine asendus Deno.spawn, Deno.spawnSync ja Deno.spawnChild jaoks).
Deno peamised omadused:
- Vaikeseadistuses on keskendutud turvalisusele. Failidele juurdepÀÀs, vĂ”rgufunktsioonid ja keskkonnamuutujate ligipÀÀs on vaikimisi blokeeritud ja nĂ”uavad selget lubamist. Rakendused kĂ€ivitatakse vaikimisi isoleeritud liivakasti keskkondades, ilma et neil oleks juurdepÀÀs sĂŒsteemiressurssidele ilma selgete Ă”iguste andmiseta.
- Sisseehitatud tugi TypeScripti keelele vÀÀrib tĂ€helepanu lisaks JavaScriptile. TĂŒĂŒpide kontrollimiseks ja JavaScripti genereerimiseks kasutatakse sisemist TypeScripti kompilaatorit, mis vĂ”ib mĂ”nevĂ”rra aeglustada jĂ”udlust vĂ”rreldes JavaScripti tĂ”lgendamisega V8-s.
- Runtime on tarnib enesetĂ€ieliku kĂ€ivitatava faili kujul (âdenoâ). Rakenduste kĂ€ivitamiseks Deno abil piisab, kui laadida alla oma platvormile ĂŒks kĂ€ivitatav fail, mille suurus on umbes 30 MB, ilma vĂ€liste sĂ”ltuvusteta ja ilma, et oleks vaja mingit erilist installatsiooni. Samas ei ole deno monoliitne rakendus, vaid see koosneb Rustis kirjutatud crate-pakkidest (deno_core, rusty_v8), mida saab kasutada eraldi;
- Programmi kĂ€itamisel ja moodulite laadimisel saab kasutada URL-aadressimist. NĂ€iteks, kĂ€ivitamiseks programmi welcome.js vĂ”ib kasutada kĂ€sku âdeno https://deno.land/std/examples/welcome.jsâ. Kood vĂ€listelt allikatelt laaditakse ja salvestatakse lokaalses sĂŒsteemis, kuid kunagi ei uuendata automaatselt (uuendamiseks peab rakendust selgelt kĂ€ivitama lipuga ââreloadâ).
- Efektiivne HTTP-vÔrgupÀringute töötlemine, platvorm on loodud kÔrge jÔudlusega vÔrgurakenduste loomiseks.
- 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 sĂ”ltumatute 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 viidata moodulitele URL-i kaudu. NÀiteks mooduli laadimiseks vÔib koodis kasutada "import * as log from 'https://deno.land/std/log/mod.ts'. VÀlisest serverid URL-ist alla laaditud failid vahetatakse mahukaustades. Moodulite versioonide sidumine mÀÀratakse URL-is versiooninumbrite nÀidete kaudu, nÀiteks 'https://unpkg.com/liltest@0.0.5/dist/liltest.js';
- Integreeritud on sĂ”ltuvuste kontrollimise sĂŒsteem (kĂ€sk 'deno info') ja koodi vormindamise utiliit (deno fmt);
- Erinevused Node.js-st:
Allikas: opennet.ru
