Proiectul Deno dezvoltă o platformă JavaScript securizată similară cu Node.js

Disponibil lansarea proiectului Dă-mi 0.33, care oferă o platformă asemănătoare Node.js pentru execuția autonomă a aplicațiilor în JavaScript și TypeScript care poate fi utilizată pentru a rula aplicații fără a fi legată de un browser, cum ar fi crearea de handlere care rulează pe server. Deno folosește un motor JavaScript V8, care este folosit și în Node.js și browsere bazate pe proiectul Chromium. Cod proiect distribuit de sub licență MIT. Proiectul este dezvoltat de Ryan Dahl (Ryan Dahl), creatorul platformei JavaScript Node.js.

Unul dintre obiectivele principale ale creării unui nou timp de execuție pentru JavaScript este de a oferi un mediu mai sigur. Pentru a îmbunătăți securitatea, motorul V8 este scris în Rust, ceea ce evită multe dintre vulnerabilitățile care apar din manipularea memoriei de nivel scăzut, cum ar fi accesul după liber, dereferențele pointerului nul și depășirile de buffer. Platforma este folosită pentru procesarea cererilor în modul neblocant Tokio, scris tot în Rust. Tokio vă permite să creați aplicații de înaltă performanță bazate pe arhitectură bazată pe evenimente, care acceptă multi-threading și procesează cererile de rețea în modul asincron.

Principalul caracteristici Deno:

  • Configurație implicită orientată spre securitate. Accesul la fișiere, conectarea în rețea și accesul la variabilele de mediu sunt dezactivate implicit și trebuie activate în mod explicit;
  • Suport încorporat pentru limbajul TypeScript în plus față de JavaScript;
  • Runtime vine sub forma unui singur fișier executabil autonom („deno”). Pentru a rula aplicații folosind Deno este suficient descărcare pentru platforma sa un fișier executabil, de aproximativ 10 MB, care nu are dependențe externe și nu necesită nicio instalare specială pe sistem;
  • La pornirea programului, precum și pentru a încărca module, puteți utiliza adresarea URL. De exemplu, pentru a rula programul welcome.js, puteți folosi comanda „deno https://deno.land/std/examples/welcome.js”. Codul din resurse externe este descărcat și stocat în cache pe sistemul local, dar nu este niciodată actualizat automat (actualizarea necesită rularea explicită a aplicației cu indicatorul „--reload”);
  • Procesarea eficientă a solicitărilor de rețea prin HTTP în aplicații; platforma este concepută pentru crearea de aplicații de rețea de înaltă performanță;
  • Abilitatea de a crea aplicații web universale care pot fi executate atât în ​​Deno, cât și într-un browser web obișnuit;
  • Pe lângă timpul de execuție, platforma Deno acționează și ca manager de pachete și vă permite să accesați module prin URL în interiorul codului. De exemplu, pentru a încărca un modul, puteți specifica în cod „import * ca log din „https://deno.land/std/log/mod.ts”. Fișierele descărcate de pe servere externe prin URL sunt stocate în cache. Legarea la versiunile modulelor este determinată prin specificarea numerelor de versiune în interiorul adresei URL, de exemplu, „https://unpkg.com/[e-mail protejat]/dist/liltest.js";
  • Structura include un sistem integrat de inspecție a dependenței (comanda „deno info”) și un utilitar pentru formatarea codului (deno fmt).
  • Pentru dezvoltatorii de aplicații propus un set de module standard care au fost supuse unui audit suplimentar și testări de compatibilitate;
  • Toate scripturile aplicației pot fi combinate într-un singur fișier JavaScript.

Diferențele față de Node.js:

  • Deno nu folosește managerul de pachete npm
    și nu este legat de depozite, modulele sunt adresate printr-un URL sau printr-o cale de fișier, iar modulele în sine pot fi plasate pe orice site web;

  • Deno nu folosește „package.json” pentru a defini module;
  • Diferența API, toate acțiunile asincrone din Deno returnează o promisiune;
  • Deno necesită definirea explicită a tuturor permisiunilor necesare pentru fișiere, variabile de rețea și de mediu;
  • Toate erorile care nu sunt furnizate cu handlere duc la terminarea aplicației;
  • Deno folosește sistemul de module ECMAScript și nu acceptă require().

Sursa: opennet.ru

Adauga un comentariu