PÀrast kahe aasta arendust esimene mÀrkimisvÀÀrne vÀljalase , platvorm, mis on mÔeldud JavaScripti ja TypeScripti rakenduste isoleeritud kÀitamiseks ning mida saab kasutada serveripoolsete töötlejate loomiseks. Platvormi arendab Ryan Dahl (), Node.js-i looja. Nagu Node.js-is, kasutab Deno JavaScripti mootorit , mida kasutatakse ka Chromiumil pÔhinevates brauserites. Sellegipoolest ei ole Deno Node.js-i haru, vaid esindab nullist loodud uut projekti. Projekti kood on MIT litsentsi all. Kompilatsioonid Linuxile, Windowsile ja macOS-ile.
MĂ€rkimisvÀÀrne versiooninumber on seotud Deno nimede ruumi API stabiliseerimisega, mis vastutavad rakenduste suhtlemise eest kasutajaoperatsioonisĂŒsteemiga. Programmiliidesed, mis pole veel , on vaikimisi peidetud ja kĂ€ttesaadavad ainult 'âunstable' reĆŸiimis töötades. Uute versioonide vĂ€ljatöötamise kĂ€igus viiakse sarnased API-d jĂ€rk-jĂ€rgult stabiilseteks. Globaalne API, mis sisaldab selliseid tavalisi funktsioone nagu setTimeout() ja fetch(), on vĂ”imalusel lĂ€hedane tavaliste veebibrauserite API-dele ja areneb vastavalt veebistandarditele. Rust API-d, mida rakenduses otseselt kasutatakse, ja Deno runtime'i pistikprogrammide arendamise liides pole veel stabiliseeritud ja arenevad jĂ€tkuvalt.
Uue JavaScripti platvormi loomise peamised motiivid olid soov kĂ”rvaldada kontseptuaalsed vead, Node.js-i arhitektuuris, ja pakkuda kasutajatele turvalisemat keskkonda. Turvalisuse suurendamiseks on V8 mootori ĂŒmber kirjutatud Rust keeles, mis vĂ”imaldab vĂ€ltida paljusid haavatavusi, mis tekivad madala taseme mĂ€luhalduse tĂ”ttu, nĂ€iteks juurdepÀÀs vabastatud mĂ€lupiirkondadele, nullnĂ€idikute tĂŒhistamine ja mĂ€lupiiri ĂŒletamine. Ootamatute pĂ€ringute töötlemiseks kasutatakse platvormi , mis on samuti kirjutatud Rust keeles. Tokio vĂ”imaldab luua kĂ”rge jĂ”udlusega sĂŒndmustepĂ”hiseid rakendusi, mis toetavad multitegumtöötlust ja asynchronous vĂ”rgupĂ€ringute töötlemist.
Peamised Deno:
- 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 TypeScripti keele tugi JavaScripti kĂ”rval. TĂŒĂŒpide kontrollimiseks ja JavaScripti genereerimiseks kasutatakse sisseehitatud TypeScripti kompiraatorit, mis toob kaasa jĂ”udluse languse vĂ”rreldes JavaScripti sĂ”nastamisega V8-s. Tulevikus on plaanis luua oma tĂŒĂŒpide kontrollimise sĂŒsteem TypeScriptile, mis tĂ”stab jĂ”udlust oluliselt.
- KĂ€ivitusaja keskkond on saadaval ĂŒhes iseseisvas tĂ€itmisfailis (âdenoâ). Rakenduste kĂ€itamiseks Deno abil piisab, kui oma platvormile ĂŒks tĂ€itmisfail, mille suurus on umbes 20 MB, millel pole vĂ€liseid sĂ”ltuvusi ja mis ei nĂ”ua erilist installimist sĂŒsteemis. Samuti ei ole deno monoliitne rakendus, vaid see on kogu crate-paketite kogum Rustis (, ), 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 komplekti olemasolu Lisaks kĂ€itusaegadele tĂ€idab Deno platvorm ka pakihalduri rolli ja vĂ”imaldab koodis viidata moodulitele URL-i kaudu. NĂ€iteks saab mooduli laadimiseks koodis mĂ€rkida: âimport * as log from "https://deno.land/std/log/mod.ts". VĂ€liste serverite kaudu laaditud failid URL-ist vahemĂ€lustatud. Moodulite versioonide sidumine toimub versiooninumbrite mĂ€rkimise teel URL-is, nĂ€iteks "https://unpkg.com/liltest@0.0.5/dist/liltest.js";
- Kogu rakenduse skriptid saab ĂŒhendada ĂŒheks JavaScripti failiks.
- Integreeritud on sĂ”ltuvuste kontrollimise sĂŒsteem (kĂ€sk 'deno info') ja koodi vormindamise utiliit (deno fmt);
- Erinevused Node.js-st:
Deno ei kasuta paketihaldurit npm
- ja see ei ole seotud hoidlate, samuti toimub moodulite aadressimine URL-i vÔi failitee kaudu ning neid mooduleid saab majutada mis tahes veebisaidil;
Deno-s ei kasutata âpackage.jsonâ-i moodulite mÀÀratlemiseks; - API erinevused, kĂ”ik asĂŒnkroonsed tegevused Deno-s tagastavad promise;
- Deno nÔuab, et kÔik vajalikud Ôigused failide, vÔrgu ja keskkonnamuutujite jaoks oleksid selgelt mÀÀratletud;
- KÔik vead, millele ei ole mÀÀratud kÀsitlejat, viivad rakenduse tÀitmise lÔpetamiseni;
- Deno-s rakendatakse ECMAScripti moodulisĂŒsteemi ja ei toetata require();
- Deno kasutab ECMAScripti moodulite sĂŒsteemi ning ei toeta require();
- Deno sisseehitatud HTTP-server on kirjutatud TypeScriptis ja töötab kohalike TCP-sokkide peal, samas kui Node.js HTTP-server on kirjutatud C keeles ja pakub JavaScripti sidemeid. Deno arendajad keskendusid kogu TCP-sokkide kihi optimeerimisele ja ĂŒldisema liidese pakkumisele. Deno HTTP-server tagab madalama lĂ€bilaskevĂ”ime, kuid garanteerib etteennustatavad madalad latentsused. NĂ€iteks suutis Deno HTTP-serveriga ĂŒles ehitatud lihtne rakendus töödelda 25 000 pĂ€ringut sekundis maksimaalse latentsusega 1,3 millisekundit. Node.js puhul töötles sarnane rakendus 34 000 pĂ€ringut sekundis, kuid latentsus varieerus 2 ja 300 millisekundi vahel.
- Deno ei ole ĂŒhtegi Node.js (NPM) paketti ĂŒhilduv, kuid areneb eraldi. Node.js standardteegiga ĂŒhilduvuse tagamiseks, vĂ”imaldades Deno-l kĂ€itada jĂ€rjest rohkem Node.js jaoks kirjutatud rakendusi.
Allikas: opennet.ru
