izdavanje projekta , koji nudi platformu sličnu Node.js za izolirano izvršavanje aplikacija napisano u JavaScript i TypeScript-u, koja se može koristiti za pokretanje aplikacija bez oslanjanja na preglednik, na primjer, za izradu poslužitelja. U Deno-u se koristi JavaScript motor , koji se također koristi u Node.js-u i preglednicima temeljenim na projektu Chromium. Izvorni kod projekta pod MIT licencom. Projekt razvija Ryan Dahl (), kreator JavaScript platforme Node.js.
Jedan od glavnih ciljeva stvaranja novog runtime-a za JavaScript je pružanje sigurnijeg okruženja. Radi povećanja sigurnosti, omotač oko V8 motora je napisan na jeziku Rust, što omogućava izbjegavanje mnogih ranjivosti koje se pojavljuju zbog niskonivojskog rada s memorijom, poput pristupanja memorijskom prostoru nakon što je oslobođen, dereferenciranja nultih pokazivača i prekoračenja granica bafera. Za obradu zahtjeva koristi se platforma , također napisana na jeziku Rust. Tokio omogućava izradu visoko performansnih aplikacija temeljenih na arhitekturi orijentiranoj na događaje (Event-driven), koje podržavaju višedretvenost i obradu mrežnih zahtjeva u asinkronom režimu.
Glavne Deno:
- Usmjerenost na sigurnost u zadanoj konfiguraciji. Pristupi datotekama, mrežne mogućnosti i pristup varijablama okruženja su prema zadanim postavkama blokirani i zahtijevaju eksplicitno omogućavanje;
- Ugrađena podrška za TypeScript uz JavaScript;
- Runtime dolazi u obliku jedne samodostatne izvršne datoteke ('deno'). Za pokretanje aplikacija koristeći Deno dovoljno je za svoju platformu jedan izvršni datoteka, veličine oko 10 MB, bez vanjskih ovisnosti i ne zahtijeva posebnu instalaciju u sustav;
- Prilikom pokretanja programa, kao i za učitavanje modula, mogu se koristiti adrese putem URL-a. Na primjer, za pokretanje programa welcome.js može se koristiti naredba 'deno https://deno.land/std/examples/welcome.js'. Kod s vanjskih resursa učitava se i kešira na lokalnom sustavu, ali se nikada automatski ne ažurira (za ažuriranje je potrebno izričito pokrenuti aplikaciju s zastavicom '--reload');
- Učinkovita obrada mrešnih zahtjeva putem HTTP-a, platforma je osmišljena za stvaranje visoko performantnih mrežnih aplikacija;
- Mogućnost izrade univerzalnih web aplikacija koje se mogu izvesti kako u Denu, tako i u običnom web pregledniku;
- Osim runtime, Deno također djeluje kao upravitelj paketa i omogućava korištenje modula putem URL-a unutar koda. Na primjer, za učitavanje modula možete u kodu navesti „import * as log from «https://deno.land/std/log/mod.ts». Datoteke učitane s vanjskih poslužitelja putem URL-a se keširaju. Verzioniranje modula određuje se navođenjem brojeva verzija unutar URL-a, na primjer, «https://unpkg.com/liltest@0.0.5/dist/liltest.js»;
- U integraciju je uključeni sustav inspekcije ovisnosti (naredba 'deno info') i alat za formatiranje koda (deno fmt).
- Za programere aplikacija set standardnih modula koji su prošli dodatnu reviziju i provjeru kompatibilnosti;
- Sve skripte aplikacije mogu se spojiti u jednu JavaScript datoteku.
Razlike u odnosu na Node.js:
- Deno ne koristi upravitelj paketa npm
i ne oslanja se na repozitorije, adrese modula određuju se putem URL-a ili preko datotečnih putanja, a moduli se mogu nalaziti na bilo kojoj stranici; - U Denu se ne koristi „package.json” za definiranje modula;
- Razlika u API-ju, sve asinkrone radnje u Denu vraćaju promise;
- Deno zahtijeva eksplicitno definiranje svih potrebnih ovlasti za datoteke, mrežu i varijable okruženja;
- Sve pogreške bez handlera dovode do prekida izvršavanja aplikacije;
- U Deno-u se koristi sistem modula ECMAScript i ne podržava require().
Izvor: opennet.ru
