Node.js poate fi bine stabilit, dar nu treceți cu vederea Deno, un cadru similar de la același dezvoltator.

Node.js este un cadru de lungă durată care vă permite să scrieți cod pe server în JavaScript. Lansat inițial în 2009, cadrul a cunoscut o creștere considerabilă și o explozie a utilizării în ultimii ani.

Deno are diferențe în stilul de formatare, sintaxa de import și gestionarea pachetelor, dar același inginer a construit aceste cadre concurente pe același motor.

Astăzi, Deno există suficient de mult pentru a câștiga un loc în stivele multor dezvoltatori. Dacă doriți să începeți un nou proiect JavaScript, s-ar putea să vă întrebați care este alegerea potrivită.

Caracteristici Node și Deno

La aproape nouă ani de la lansarea Node, dezvoltatorul acestuia, Ryan Dahl, a anunțat un nou proiect: Deno. Acolo unde Node a fost odată singura opțiune pentru JavaScript pe partea de server, Deno ne-a oferit o alternativă.

Node.js și Deno sunt destul de asemănătoare în multe privințe. Majoritatea diferențelor dintre cele două apar sub capotă. Acolo unde Node rulează pe motorul JavaScript V8, Deno rulează peste un motor personalizat, construit în Rust, cu un accent puternic pe performanță.

instagram viewer

Cele mai multe dintre diferențele majore dintre cele două se bazează pe caracteristicile pe care le acceptă fiecare limbă. Modulele, liningul, dactilografiatul și gestionarea pachetelor sunt toate tratate destul de diferit între cele două.

Importuri de module: CommonJS vs. ES

Node.js utilizează implicit module CommonJS cu sintaxa require(). Node vă permite să schimbați acest lucru modificând fișierele de configurare pentru a utiliza module ECMAScript cu sintaxa import() în schimb, dacă doresc.

// Acesta este un import valid de modul CommonJS în Node.js
var _ = cere("lodash");

// Acesta este un import valid de modul ECMAScript în Node.js
import _ din"lodash";

Există o interoperabilitate limitată între cele două tipuri de încărcare a modulelor ES, unele module ECMAScript putând fi incluse folosind sintaxa require(). Fiecare tip de import gestionează modulele ușor diferit, dar oricare dintre ele va funcționa în majoritatea cazurilor.

Acest lucru vă permite să alegeți metodologia preferată pentru includerea modulelor externe atunci când creați un proiect.

Deno adoptă o abordare diferită atunci când vine vorba de includerea modulelor externe într-un proiect. Deno folosește sintaxa include() pentru toate modulele, totuși, spre deosebire de importul lui Node, modulele importate în Deno pot veni din orice locație. Aceste locații pot include chiar și rețele de livrare de conținut la distanță (CDN-uri).

// Aceasta este o declarație de import validă în Deno
import" https://deno.land/x/[email protected]/dist/lodash.js";

Acest lucru vă permite să importați dependențe din orice locație, locală sau de la distanță, oferind o flexibilitate mult mai mare. Dacă preferați să lucrați cu sintaxa tradițională require din Node.js, puteți scrie propria funcție polyfill require în Deno ca o soluție.

Suport pentru codul TypeScript

TypeScript a cunoscut o creștere în creștere a popularității în ultimii câțiva ani, fără semne de încetinire în curând. Aducerea dinamicii codului de tip sigur în JavaScript s-a dovedit a fi un efort extraordinar de reușit.

Astăzi, configurarea unui nou proiect TypeScript sau conversia unui proiect Node.js existent în TypeScript este simplă, chiar dacă necesită oarecum timp.

Adăugarea suportului TypeScript a devenit suficient de populară încât majoritatea cadrelor moderne au acum o anumită formă de suport TypeScript. Angular a condus drumul, cu suport TypeScript ieșit din cutie. Astăzi, chiar React are metode pentru a configura suportul TypeScript.

Deno a fost proiectat cu suport TypeScript inclus pentru a vă ajuta să vă îmbunătățiți productivitatea. Cu suport pentru TypeScript, Deno nu are nici măcar configurația minimă cerută de Node.js pentru a dezvolta cod JavaScript tastat.

Dacă vă place TypeScript, puteți începe rapid și ușor cu suportul Deno, dar este posibil să vă simțiți lipsă de unele dintre bibliotecile standard Node.js. În timp ce Deno oferă o configurare mai rapidă, lipsa unui ecosistem dezvoltat vă poate împiedica în procesul de construire.

Linting pentru a genera un cod mai curat

Node.js are o mare varietate de linter din care puteți alege. Există o mulțime de opțiuni bine dezvoltate pe care le puteți instala și configura rapid și ușor. La fel ca în cazul TypeScript, totuși, va trebui să faceți un pic de lucru pentru a începe cu linter-ul ales.

Deno a luat o cale ușor diferită în formatarea codului, venind cu propria sa soluție de lining încorporată pentru fișierele .js, .ts și .md. Rularea comenzii „deno fmt” va formata automat orice fișiere din directorul de lucru curent.

Dacă nu sunteți un fan al linter implicit, există o opțiune de a instala și rula sistemul de formatare dorit, la fel cum ați face cu Node. Comutarea sistemelor este simplă, deoarece linter-ul lui Deno rulează printr-o comandă externă și nu ca parte a conductei de construcție implicite.

Dacă vă gândiți să schimbați linter-ul lui Deno cu un sistem nou, ar trebui să fiți conștienți de potențialele probleme de compatibilitate și să le țineți minte. Majoritatea linter-urilor JavaScript vor necesita o instalare a Node pentru a rula, chiar dacă nu este sistemul pe care rulează proiectul formatat.

Managementul pachetelor

Managerul de pachete Node (npm) este foarte cunoscut printre dezvoltatorii moderni. Pe baza succesului unor sisteme similare precum Python’s Pip și Ruby’s RubyGems, npm a câștigat rapid popularitate.

Preocupările persistente duc la dezvoltarea managerilor concurenți, cum ar fi pNPm și Yarn. Există unele situații în care puteți alege chiar să instalați și să utilizați mai mulți manageri de pachete cu Node.

Astăzi, dacă alegeți să dezvoltați în Node.js, aveți oarecum răsfățat de alegere când vine vorba de gestionarea pachetelor. Node se mândrește cu un ecosistem înfloritor, cu o mulțime de opțiuni pentru instalarea pachetelor. În prezent există peste 1,3 milioane în registrul principal npm.

Npm vă permite să vă publicați propriile pachete, ceea ce duce la o bibliotecă uluitor de mare.

Deno a adoptat o abordare complet diferită a gestionării pachetelor. Nu are și nici nu necesită un sistem de gestionare a pachetelor. În schimb, Deno permite importul direct de biblioteci externe nu numai din sistemul dezvoltatorului, ci din orice locație care acceptă solicitări HTTP.

Acest lucru vă permite să importați biblioteci din depozitul lui Deno sau din orice CDN online, direct din baza lor de cod.

Registrul oficial de pachete al lui Deno nu este la fel de dezvoltat ca cel al lui Node, datorită avansului de aproape nouă ani al lui Node. Capacitatea de a importa biblioteci de oriunde te împiedică să suferi consecințele unui ecosistem care nu a avut încă șansa să crească la dimensiunea maximă.

Implicarea comunității în Node și Deno

Lansat inițial în 2009 de Ryan Dahl, Node a avut suficient timp pentru ca comunitatea de dezvoltatori să se implice. Cu o mulțime de primitori și o bibliotecă considerabilă de pachete stocate în depozitul său oficial și la dispoziția dumneavoastră, publicul a avut mult de spus în creșterea Node.js.

Platforma în sine este complet open-source, întreținută de Fundația OpenJS și de mulți colaboratori.

Deno a fost lansat în 2018, la aproape 9 ani după Node. A fost dezvoltat în principal de Ryan Dahl pentru a răspunde preocupărilor și regretelor pe care le-a avut cu implementarea lui Node. Astăzi, Deno este, de asemenea, open source sub licența MIT.

Cu o mulțime de colaboratori și un depozit propriu în creștere, Deno a văzut mult interes din partea comunității.

Preocupările de performanță ale celor două cadre

Pentru programatorii interesați de diferențele relative de performanță dintre cele două cadre, există o mică diferență între cele două. Motorul personalizat al lui Deno scris în Rust suprapune un cadru de bază care este încă motorul V8. În cele din urmă, atât Deno, cât și Node sunt comparabile în aproape toate cazurile din punct de vedere al performanței.

Acesta pare să fie cazul, indiferent dacă codul rezultat rulează pe server sau pe client. Dat fiind că randamentele de performanță nu țin cont de decizie, sunteți liber să alegeți cadrul cu care vă simțiți cel mai confortabil.

Ryan Dahl, creatorul ambelor cadre, a oferit o varietate de motive pentru crearea lui Deno. Deși a menționat mai mulți factori, de la eșecul de a încorpora promisiunile în multe API-uri până la sistemul de construcție ales, performanța nu a făcut parte din proces.

Node vs Deno: care este alegerea potrivită?

Sub capotă, atât Node.js, cât și Deno sunt cadre remarcabil de similare. Ambele execută JavaScript folosind motorul V8 cu performanțe și capacități similare. Deși există unele diferențe în sintaxă, gestionarea pachetelor și suport încorporat, alegerea pe care o utilizați se bazează în mare parte pe preferințele dvs.

Node se mândrește cu un ecosistem uimitor de mare, dar Deno vă permite să vă extrageți dependențele din orice sursă. În cele din urmă, va trebui să aruncați o privire atentă asupra propriului stil de dezvoltare și să determinați care platformă este mai potrivită pentru dvs.