Node.js autors prezentÄja droÅ”o JavaScript platformu Deno 1.0
PÄc divu gadu attÄ«stÄ«bas uzrÄdÄ«ts pirmais lielais izlaidums Dodiet man 1.0, platforma autonomai lietojumprogrammu izpildei JavaScript un TypeScript, ko var izmantot, lai izveidotu apdarinÄtÄjus, kas darbojas serverÄ«. Platformu izstrÄdÄ Raiens DÄls (Raiens DÄls), Node.js veidotÄjs. TÄpat kÄ Node.js, Deno izmanto JavaScript dzinÄju V8, kas tiek izmantota arÄ« pÄrlÅ«kprogrammÄs, kuru pamatÄ ir Chromium. TajÄ paÅ”Ä laikÄ Deno nav Node.js dakÅ”a, bet gan jauns projekts, kas izveidots no nulles. Projekta kods izplata saskaÅÄ ar MIT licenci. Asamblejas sagatavots operÄtÄjsistÄmai Linux, Windows un macOS.
NozÄ«mÄ«gais versijas numurs ir saistÄ«ts ar API stabilizÄciju Deno nosaukumvietÄ, kas ir atbildÄ«gas par lietojumprogrammu mijiedarbÄ«bu ar OS. ProgrammatÅ«ras saskarnes, kas ir lÄ«dz Å”im nav stabilizÄjies, pÄc noklusÄjuma ir paslÄptas un pieejamas tikai tad, ja darbojas ā--nestabilaā režīmÄ. Veidojot jaunas versijas, Å”Ädas API pakÄpeniski kļūs stabilas. API globÄlajÄ nosaukumtelpÄ, kas ietver tÄdas izplatÄ«tas funkcijas kÄ setTimeout() un fetch(), ir pÄc iespÄjas tuvÄka parasto tÄ«mekļa pÄrlÅ«kprogrammu API un ir izstrÄdÄta saskaÅÄ ar pÄrlÅ«kprogrammu tÄ«mekļa standartiem. Rust nodroÅ”inÄtÄs API, kas tiek izmantotas tieÅ”i platformas kodÄ, kÄ arÄ« interfeiss spraudÅu izstrÄdei Deno izpildlaikam, vÄl nav stabilizÄti un turpina attÄ«stÄ«ties.
Jaunas JavaScript platformas izveides galvenie motÄ«vi bija vÄlme novÄrst konceptuÄlÄs kļūdas, atzina Node.js arhitektÅ«rÄ un nodroÅ”inÄt lietotÄjiem droÅ”Äku vidi. Lai uzlabotu droŔību, V8 dzinÄjs ir rakstÄ«ts Rust, kas ļauj izvairÄ«ties no daudzÄm ievainojamÄ«bÄm, kas rodas no zema lÄ«meÅa atmiÅas manipulÄcijÄm, piemÄram, pÄc brÄ«vpiekļuves, nulles rÄdÄ«tÄja atsauÄu un bufera pÄrtÄriÅa. Platforma tiek izmantota, lai apstrÄdÄtu pieprasÄ«jumus nebloÄ·ÄjoÅ”Ä režīmÄ Tokija, rakstÄ«ts arÄ« Rust. Tokio ļauj jums izveidot augstas veiktspÄjas lietojumprogrammas, kuru pamatÄ ir notikumu vadÄ«ta arhitektÅ«ra, atbalstot vairÄku vÄ«tÅu veidoÅ”anu un apstrÄdÄjot tÄ«kla pieprasÄ«jumus asinhronÄ režīmÄ.
Uz droŔību orientÄta noklusÄjuma konfigurÄcija. Piekļuve failiem, tÄ«kloÅ”ana un piekļuve vides mainÄ«gajiem pÄc noklusÄjuma ir atspÄjota, un tie ir skaidri jÄiespÄjo. Lietojumprogrammas pÄc noklusÄjuma darbojas izolÄtÄs smilÅ”kastes vidÄs un nevar piekļūt sistÄmas iespÄjÄm, nepieŔķirot nepÄrprotamas atļaujas;
IebÅ«vÄts TypeScript atbalsts Ärpus JavaScript. Standarta TypeScript kompilators tiek izmantots, lai pÄrbaudÄ«tu veidus un Ä£enerÄtu JavaScript, kas rada veiktspÄjas trÄpÄ«jumu salÄ«dzinÄjumÄ ar JavaScript parsÄÅ”anu V8. NÄkotnÄ plÄnojam sagatavot paÅ”i savu TypeScript tipa pÄrbaudes sistÄmas ievieÅ”anu, kas par lielumu uzlabos TypeScript apstrÄdes veiktspÄju;
Izpildlaiks tiek nodroÅ”inÄts viena atseviŔķa izpildÄmÄ faila (ādenoā) formÄ. Lai palaistu lietojumprogrammas, izmantojot Deno, pietiek lejupielÄdÄt tÄs platformai ir viens izpildÄmais fails, apmÄram 20 MB, kuram nav ÄrÄju atkarÄ«bu un nav nepiecieÅ”ama Ä«paÅ”a instalÄÅ”ana sistÄmÄ. TurklÄt deno nav monolÄ«ta lietojumprogramma, bet gan kastes iepakojumu kolekcija Rust (deno_core, sarÅ«sÄjis_v8), ko var izmantot atseviŔķi;
StartÄjot programmu, kÄ arÄ« lai ielÄdÄtu moduļus, var izmantot URL adresÄÅ”anu. PiemÄram, lai palaistu programmu welcome.js, varat izmantot komandu ādeno https://deno.land/std/examples/welcome.jsā. Kods no ÄrÄjiem resursiem tiek lejupielÄdÄts un saglabÄts lokÄlajÄ sistÄmÄ keÅ”atmiÅÄ, taÄu tas nekad netiek automÄtiski atjauninÄts (atjauninÄÅ”anai ir skaidri jÄpalaiž lietojumprogramma ar karogu ā--reloadā);
EfektÄ«va tÄ«kla pieprasÄ«jumu apstrÄde, izmantojot HTTP lietojumprogrammÄs; platforma ir paredzÄta augstas veiktspÄjas tÄ«kla lietojumprogrammu izveidei;
IespÄja izveidot universÄlas tÄ«mekļa lietojumprogrammas, kuras var izpildÄ«t gan Deno, gan parastÄ tÄ«mekļa pÄrlÅ«kprogrammÄ;
pieejamÄ«ba standarta moduļu komplekts, kuras izmantoÅ”anai nav nepiecieÅ”ama saistÄ«Å”anÄs ar ÄrÄjÄm atkarÄ«bÄm. Standarta kolekcijas moduļiem ir veikta papildu audita un saderÄ«bas pÄrbaude;
Papildus izpildlaikam Deno platforma darbojas arÄ« kÄ pakotÅu pÄrvaldnieks un ļauj piekļūt moduļiem pÄc koda URL. PiemÄram, lai ielÄdÄtu moduli, kodÄ var norÄdÄ«t āimport * as log no āhttps://deno.land/std/log/mod.tsā. Faili, kas lejupielÄdÄti no ÄrÄjiem serveriem, izmantojot URL, tiek saglabÄti keÅ”atmiÅÄ. SaistÄ«Å”ana ar moduļa versijÄm tiek noteikta, norÄdot versiju numurus URL iekÅ”pusÄ, piemÄram, āhttps://unpkg.com/[e-pasts aizsargÄts]/dist/liltest.js";
StruktÅ«ra ietver integrÄtu atkarÄ«bas pÄrbaudes sistÄmu (komanda "deno info") un utilÄ«tu koda formatÄÅ”anai (deno fmt);
Visus lietojumprogrammu skriptus var apvienot vienÄ JavaScript failÄ.
AtŔķirības no Node.js:
Deno neizmanto npm pakotÅu pÄrvaldnieku
un nav saistÄ«ts ar krÄtuvÄm, moduļi tiek adresÄti, izmantojot URL vai faila ceļu, un paÅ”us moduļus var ievietot jebkurÄ tÄ«mekļa vietnÄ;
Deno neizmanto "package.json", lai definÄtu moduļus;
API atŔķirÄ«ba, visas asinhronÄs darbÄ«bas Deno dod solÄ«jumu;
Deno pieprasa skaidru visu nepiecieŔamo atļauju definīciju failiem, tīklam un vides mainīgajiem;
Visas kļūdas, kas nav nodroÅ”inÄtas ar apstrÄdÄtÄjiem, noved pie pieteikuma pÄrtraukÅ”anas;
Deno izmanto ECMAScript moduļu sistÄmu un neatbalsta request();
Deno iebÅ«vÄtais HTTP serveris ir rakstÄ«ts TypeScript un darbojas virs vietÄjÄm TCP ligzdÄm, savukÄrt Node.js HTTP serveris ir rakstÄ«ts C valodÄ un nodroÅ”ina JavaScript saistÄ«Å”anu. Deno izstrÄdÄtÄji ir koncentrÄjuÅ”ies uz visa TCP ligzdas slÄÅa optimizÄÅ”anu un vispÄrÄ«gÄka interfeisa nodroÅ”inÄÅ”anu. Deno HTTP serveris nodroÅ”ina zemÄku caurlaidspÄju, bet garantÄ paredzamu zemu latentumu. PiemÄram, testÄ vienkÄrÅ”a lietojumprogramma, kuras pamatÄ ir Deno HTTP serveris, spÄja apstrÄdÄt 25 tÅ«kstoÅ”us pieprasÄ«jumu sekundÄ ar maksimÄlo latentumu 1.3 milisekundes. VietnÄ Node.js lÄ«dzÄ«ga lietojumprogramma apstrÄdÄja 34 tÅ«kstoÅ”us pieprasÄ«jumu sekundÄ, bet latentums bija no 2 lÄ«dz 300 milisekundÄm.
Deno nav saderÄ«gs ar Node.js (NPM) pakotnÄm, bet tiek izstrÄdÄts atseviŔķi starpslÄnis saderÄ«bai ar standarta Node.js bibliotÄku, tai attÄ«stoties, arvien vairÄk Node.js rakstÄ«to aplikÄciju varÄs darboties Deno.