Aflați Deno și mergeți dincolo de Node.js
Publicat: 2023-04-20Deși Node.js rămâne cel mai utilizat timp de execuție JavaScript pe partea de server cu o marjă uriașă, timpii de execuție alternativi precum Deno și Bun au atras atenția în timp ce încearcă să îmbunătățească conceptul Node.js.
Deno, cel mai popular dintre cele două runtime mai noi, abordează unele probleme de securitate inerente în Node.js și oferă suport mai cuprinzător pentru tehnologii precum TypeScript și WebAssembly.
În acest articol, veți explora elementele de bază Deno, veți afla cum se compară cu Node.js și Bun și veți urma o demonstrație practică care folosește Deno pentru a construi un server web HTTP simplu.
Ce este Deno?
Pe măsură ce dezvoltatorii s-au familiarizat cu JavaScript, au văzut potențialul acestuia de programare pe mașini locale. Deci, au creat timpi de execuție pe partea serverului - medii care permit executarea codului JavaScript pe mașini fără a utiliza un browser.
Ryan Dahl a dezvoltat Node.js în acest scop și, mai târziu, a creat Deno pentru a rezolva unele dintre problemele pe care le-a întâlnit cu designul original Node.js. Unele defecte notabile includ dependența sa de un manager de pachete centralizat, cum ar fi npm, lipsa unei biblioteci standard și setări de securitate laxe implicite.
Unele dintre principalele avantaje ale lui Deno includ următoarele:
- Securitate implicită — Utilizatorul trebuie să acorde în mod explicit permisiunea pentru ca codul să acceseze rețeaua, sistemul de fișiere sau mediul.
- Suport încorporat pentru TypeScript și WebAssembly — Rularea programelor TypeScript și WebAssembly în Deno este la fel de ușoară ca și rularea programelor JavaScript. Runtime-ul compilează limbile așa cum o face cu JavaScript.
- Un manager de pachete centralizat — În loc să se bazeze pe un depozit de pachete, cum ar fi npm sau managerul de pachete al lui Bun, Deno poate importa cod direct de la URL-uri. Această capacitate înseamnă că puteți încărca dependențe de oriunde sunt găzduite, inclusiv depozitul GitHub, serverul sau CDN. Deno oferă, de asemenea, un serviciu de găzduire de scripturi pentru un acces și mai ușor.
- Conformitatea cu standardele web — Deno își propune să urmeze aceleași API-uri ca și browserele, ceea ce înseamnă că codul scris pentru browsere este ușor de translat în timpul de execuție.
Companiile mari și jucătorii importanți din industrie, cum ar fi Slack, Netlify și Supabase, au adoptat Deno, dar adoptarea acestuia în rândul dezvoltatorilor web a fost mai puțin răspândită. Conform sondajului Stack Overflow din 2022, doar 1,47% dintre dezvoltatorii profesioniști care au răspuns la sondaj foloseau Deno, în timp ce 46,31% au raportat că folosesc Node.js.
Ce face Deno?
Ca orice runtime JavaScript, Deno le permite dezvoltatorilor să ruleze JavaScript pe partea de server. Ca rezultat, puteți utiliza Deno pentru a îndeplini o mare varietate de sarcini de programare.
Deno excelează cel mai mult în sarcini precum dezvoltarea de aplicații server care răspund la solicitările utilizatorilor bazate pe web. De exemplu, dacă creați o librărie online, puteți utiliza Deno pentru a crea o aplicație care preia informații dintr-o bază de date PostgreSQL, creează pagina pe care utilizatorul dorește să o vadă și o trimite browserului pentru randare.
De asemenea, puteți utiliza Deno pentru sarcini de programare de nivel inferior, cum ar fi construirea unui instrument de linie de comandă pentru a vă gestiona sarcinile de făcut prin intermediul terminalului. Cu alte cuvinte, puteți folosi Deno pentru a îndeplini aceleași obiective pe care le-ați atinge folosind limbaje precum Python sau Ruby.
Deno vs Node
Deno își propune să fie o îmbunătățire față de Node.js și își îndeplinește această promisiune în mai multe domenii cheie. Deno îmbunătățește securitatea permițând configurații de acces mai detaliate pentru diferite module de cod. De asemenea, se concentrează pe conformitatea cu standardele web API, care le permite dezvoltatorilor să folosească același cod atât pe partea de browser, cât și pe partea serverului.
Pentru echipele care lucrează la proiecte JavaScript pe partea de server, Deno a devenit o alternativă viabilă la Node. Și în timp ce funcționalitatea lor similară i-a convins pe unii dezvoltatori că Deno ar putea înlocui Node.js, această posibilitate este puțin probabilă din câteva motive cheie.
Node.js este cel mai popular timp de rulare JavaScript și a adunat un ecosistem vast de pachete prescrise și o comunitate mare și activă de utilizatori. Aceste resurse neprețuite ajută Node.js să rămână un timp de rulare extrem de atractiv.
În schimb, Deno este nou: versiunea 1.0 a fost lansată în mai 2020, așa că relativ puțini dezvoltatori au avut timp să se joace cu ea. Învățarea unui nou instrument prelungește termenele de dezvoltare. În plus, nu este clar dacă Deno ar aduce beneficii semnificative multor proiecte simple.
Dar dacă construiți o aplicație într-o zonă în care securitatea este esențială, cum ar fi finanțele, capabilitățile de securitate ale Deno ar putea face o schimbare utilă.
Deno vs Bun
Fostul inginer Stripe Jarred Sumner a lansat Bun pentru prima dată în iulie 2022 pentru testarea beta. Bun este un timp de rulare mai experimental decât Deno și, spre deosebire de Deno, este proiectat pentru a avea o compatibilitate extinsă cu Node.js.
Bun se mândrește, de asemenea, cu o performanță uluitor de rapidă, depășind Node.js și Deno. Caracteristicile cheie permit aceste capabilități:
- Un motor mai bun — În loc de motorul Google V8 JavaScript și Web Assembly, Bun folosește JavaScriptCore mai rapid și mai eficient ca motor JavaScript de bază.
- Mai mult control al codului — Bun este scris în Zig, un limbaj de nivel scăzut care oferă un control mai mare decât JavaScript asupra execuției codului.
- Eficiență reglată fin — Echipa care lucrează la Bun a prioritizat profilarea, evaluarea comparativă și optimizarea în timpul dezvoltării pentru a asigura eficiența codului.
Bun este atât de nou încât există relativ puțin suport comunitar pentru a ajuta la depanarea. Cu toate acestea, Bun poate fi distractiv pentru experimentare. Echipele care necesită în mod special o creștere a performanței ar putea găsi Bun util pentru proiectele lor, dar dezvoltarea web prioritizează frecvent alți factori decât performanța.
Noțiuni introductive cu Deno
Acum că ați învățat puțin despre Deno și cum se compară cu alte runtime JavaScript populare, este timpul să vedeți cum funcționează. În această secțiune, veți învăța cum să creați un server simplu în Deno care răspunde solicitărilor HTTP cu „Bună ziua de pe server!”
Instalarea Deno
Puteți instala Deno pe o mașină ca un executabil binar utilizând aceste instrucțiuni de instalare din documentația oficială. Pe macOS, de exemplu, puteți instala Deno cu comanda brew install deno
.
O altă modalitate de a începe să lucrezi cu Deno este să-l instalezi ca pachet npm, astfel:
Creați un folder pentru proiectul dvs. ( deno_example poate) și executați comanda npm init
în cadrul acestuia. (Puteți accepta toate opțiunile implicite sugerate de init
, deoarece creează un fișier de bază package.json .)
După inițializarea aplicației, rulați npm install deno-bin
pentru a instala pachetul binar Deno. Acum puteți actualiza fișierul package.json pentru a activa lansarea aplicației cu npm start
. Adăugați linia aldine de mai jos la proprietatea obiectului „scripturi” din fișierul implicit package.json:
"scripts": { "start": "deno run --allow-net app.ts", "test": "echo \"Error: no test specified\" && exit 1" },
Această adăugare de script îi permite lui Deno să ruleze modulul app.ts cu privilegii de rețea ( --allow-net
). Amintiți-vă, atunci când lucrați cu Deno, trebuie să permiteți în mod explicit accesul la o rețea sau un sistem de fișiere.
Acum, sunteți gata să creați modulul app.ts , responsabil pentru ascultarea pe un port și deservirea cererilor utilizatorilor.
Crearea modulului App.ts
Crearea unui server de bază în Deno este extrem de simplă. Mai întâi, creați un fișier app.ts și inserați următorul cod:
import { serve } from "https://deno.land/[email protected]/http/server.ts"; serve((_req) => new Response("Hello from the server!"), { port: 8000 });
Codul folosește funcția serve
din server.ts Deno library
stocată pe site-ul oficial Deno.land. Acest cod oferă, de asemenea, un handler de funcție serve
pentru cererile primite. Funcția de gestionare răspunde la fiecare solicitare cu „Salut de la server!”
Funcția serve
preia, de asemenea, parametri opționali, cum ar fi numărul portului în care doriți să serviți. Aici, exemplul de cod folosește acești parametri pentru a servi pe portul 8000.
Apoi, porniți serverul rulând npm start
. Acesta ar trebui să lanseze un server care ascultă pe localhost:8000
și răspunde la solicitări cu un salut.
Dacă doriți să extindeți serverul la un API complet, probabil va trebui să adăugați conectivitate la baza de date. Este ușor de făcut, deoarece comunitatea Deno a creat drivere care acceptă baze de date populare precum MariaDB/MySQL, PostgreSQL, MongoDB și multe altele.
rezumat
Duratele de execuție variază de la obișnuit și de încredere la foarte experimental. Alegerea celui potrivit pentru proiectul dvs. depinde de proiectul dvs. și de modul în care doriți ca timpul de funcționare să vă ajute să vă atingeți obiectivele.
Node.js funcționează bine pentru majoritatea proiectelor. Are un ecosistem mare și o comunitate mare care poate ajuta cu o gamă largă de scenarii de depanare.
Deno are avantajul de securitate suplimentară și o experiență mai bună pentru dezvoltatori. În același timp, este cel mai potrivit pentru echipele cu experiență, astfel încât beneficiile sale depășesc timpul și costurile forței de muncă ale învățării unui timp de rulare necunoscut.
În cele din urmă, în timp ce Bun este prea experimental pentru majoritatea proiectelor profesionale, este o perioadă de rulare unică și distractivă pentru un proiect personal sau pentru extindere.
Una peste alta, Deno oferă echilibru între beneficiile Node.js și posibilitățile experimentale ale Bun. În timp ce Node.js este o alegere utilă pentru majoritatea proiectelor, Deno poate fi în fruntea modului în care dezvoltarea web va evolua în viitor.
Între timp, exersați-vă deopotrivă înregistrându-vă la nivelul Kinsta Hobby Hosting – codificare acum și scalare mai târziu.