Node.js potrebbe essere ben consolidato, ma non trascurare Deno, un framework simile dello stesso sviluppatore.

Node.js è un framework di lunga durata che ti consente di scrivere codice lato server in JavaScript. Originariamente rilasciato nel 2009, il framework ha visto una crescita considerevole e un'esplosione nell'utilizzo negli ultimi anni.

Deno presenta differenze nello stile di formattazione, nella sintassi di importazione e nella gestione dei pacchetti, ma lo stesso ingegnere ha creato questi framework concorrenti sullo stesso motore.

Oggi, Deno è esistito abbastanza a lungo da guadagnarsi un posto nella pila di molti sviluppatori. Se stai cercando di avviare un nuovo progetto JavaScript, potresti trovarti a chiederti quale sia la scelta giusta.

Caratteristiche Nodo e Deno

Quasi nove anni dopo il rilascio di Node, il suo sviluppatore, Ryan Dahl, ha annunciato un nuovo progetto: Deno. Laddove Node era una volta l'unica opzione per JavaScript lato server, Deno ci ha fornito un'alternativa.

instagram viewer

Node.js e Deno sono abbastanza simili in molti modi. La maggior parte delle differenze tra i due si verifica sotto il cofano. Laddove Node viene eseguito sul motore JavaScript V8, Deno viene eseguito al di sopra di un motore scritto su misura costruito in Rust con una forte attenzione alle prestazioni.

La maggior parte delle principali differenze tra i due si basa sulle funzionalità supportate da ciascuna lingua. Moduli, linting, dattiloscritto e gestione dei pacchetti sono tutti gestiti in modo abbastanza diverso tra i due.

Importazioni di moduli: CommonJS vs. ES

Node.js utilizza i moduli CommonJS per impostazione predefinita con la sintassi require(). Node ti consente di cambiarlo modificando i tuoi file di configurazione per utilizzare i moduli ECMAScript con la sintassi import(), se lo desiderano.

// Questa è un'importazione di modulo CommonJS valida in Node.js
var _ = richiedere("lodash");

// Questa è un'importazione di modulo ECMAScript valida in Node.js
importare _ da'lodash';

Esiste una certa interoperabilità limitata tra i due tipi di caricamento del modulo ES con alcuni moduli ECMAScript che possono essere inclusi utilizzando la sintassi require(). Ogni tipo di importazione gestisce i moduli in modo leggermente diverso, ma entrambi funzioneranno nella maggior parte dei casi.

Ciò consente di scegliere la metodologia preferita per includere moduli esterni durante la creazione di un progetto.

Deno adotta un approccio diverso quando si tratta di includere moduli esterni in un progetto. Deno utilizza la sintassi include() per tutti i moduli, tuttavia, a differenza dell'importazione di Node, i moduli importati in Deno possono provenire da qualsiasi posizione. Queste posizioni possono anche includere reti di distribuzione di contenuti remoti (CDN).

// Questa è una dichiarazione di importazione valida in Deno
importare" https://deno.land/x/[email protected]/dist/lodash.js";

Ciò consente di importare dipendenze da qualsiasi posizione, locale o remota, offrendo una flessibilità di gran lunga maggiore. Se preferisci lavorare con la tradizionale sintassi require di Node.js, puoi scrivere la tua funzione polyfill require in Deno come soluzione alternativa.

Supporto per il codice TypeScript

TypeScript ha visto una crescente crescita di popolarità negli ultimi anni, senza segni di rallentamento in qualunque momento presto. L'introduzione di dinamiche di codice sicure per i tipi in JavaScript si è rivelata un'impresa di grande successo.

Oggi, impostare un nuovo progetto TypeScript o convertire un progetto Node.js esistente in TypeScript è semplice, anche se richiede un po' di tempo.

L'aggiunta del supporto TypeScript è diventata abbastanza popolare che la maggior parte dei framework moderni ora ha una qualche forma di supporto TypeScript. Angular ha aperto la strada, con il supporto TypeScript pronto all'uso. Oggi, anche React ha metodi per impostare il supporto TypeScript.

Deno è stato progettato con il supporto TypeScript incluso per migliorare la tua produttività. Con il supporto TypeScript pronto all'uso, a Deno manca anche la configurazione minima richiesta da Node.js per avviare lo sviluppo di codice JavaScript digitato.

Se ami TypeScript, puoi iniziare rapidamente e facilmente con il supporto di Deno, ma potresti ritrovarti a perdere alcune delle librerie Node.js standard. Sebbene Deno offra una configurazione più rapida, la mancanza di un ecosistema sviluppato potrebbe ostacolarti nel processo di creazione.

Linting per generare codice più pulito

Node.js ha un'ampia varietà di linter tra cui scegliere. Ci sono molte opzioni ben sviluppate che puoi installare e configurare rapidamente e facilmente. Proprio come nel caso di TypeScript, tuttavia, dovrai fare un po' di lavoro per iniziare con il loro linter preferito.

Deno ha preso una strada leggermente diversa nella formattazione del codice, arrivando con la propria soluzione di linting integrata per i file .js, .ts e .md. L'esecuzione del comando "deno fmt" formatterà automaticamente tutti i file nella directory di lavoro corrente.

Se non sei un fan del linter predefinito, c'è un'opzione per installare ed eseguire il tuo sistema di formattazione preferito, proprio come faresti con Node. Cambiare sistema è semplice poiché il linter di Deno viene eseguito tramite un comando esterno e non come parte della pipeline di build predefinita.

Se stai pensando di sostituire il linter di Deno con un nuovo sistema, dovresti essere consapevole dei potenziali problemi di compatibilità e tenerli a mente. La maggior parte dei linter JavaScript richiederà un'installazione di Node per essere eseguita, anche se non è il sistema su cui è in esecuzione il progetto da formattare.

Gestione dei pacchetti

Node Package Manager (npm) è molto noto tra gli sviluppatori moderni. Basandosi sul successo di sistemi simili come Pip di Python e RubyGems di Ruby, npm ha rapidamente guadagnato popolarità.

Le preoccupazioni persistenti portano allo sviluppo di gestori concorrenti, come pNPm e Yarn. Ci sono alcune situazioni in cui potresti persino scegliere di installare e utilizzare più gestori di pacchetti con Node.

Oggi, se scegli di sviluppare in Node.js, hai l'imbarazzo della scelta quando si tratta di gestione dei pacchetti. Node vanta un fiorente ecosistema con molte opzioni per i pacchetti da installare. Attualmente ci sono oltre 1,3 milioni nel registro npm principale.

Npm ti consente di pubblicare i tuoi pacchetti, portando a una biblioteca incredibilmente grande.

Deno ha adottato un approccio completamente diverso alla gestione dei pacchetti. Non ha né richiede un sistema di gestione dei pacchetti. Invece, Deno consente l'importazione diretta di librerie esterne non solo dal sistema dello sviluppatore, ma da qualsiasi posizione che accetti richieste HTTP.

Ciò ti consente di importare librerie dal repository di Deno o da qualsiasi CDN online, direttamente dalla loro base di codice.

Il registro dei pacchetti ufficiale di Deno non è completamente sviluppato come quello di Node, grazie al vantaggio di quasi nove anni di Node. La possibilità di importare librerie da qualsiasi luogo ti impedisce di subire le conseguenze di un ecosistema che non ha ancora avuto la possibilità di crescere a grandezza naturale.

Coinvolgimento della comunità in Node e Deno

Originariamente rilasciato nel 2009 da Ryan Dahl, Node ha avuto tutto il tempo per coinvolgere la comunità degli sviluppatori. Con un sacco di utenti iniziali e una considerevole libreria di pacchetti archiviati nel suo repository ufficiale e a tua disposizione, il pubblico ha avuto molto da dire sulla crescita di Node.js.

La piattaforma stessa è completamente open source, gestita dalla OpenJS Foundation e da molti contributori.

Deno è stato rilasciato nel 2018, quasi 9 anni dopo Node. È stato sviluppato principalmente da Ryan Dahl per rispondere alle preoccupazioni e ai rimpianti che aveva con la sua implementazione di Node. Oggi Deno è anche open source con licenza MIT.

Con molti contributori e un proprio repository in crescita, Deno ha riscontrato molto interesse da parte della comunità.

Preoccupazioni per le prestazioni dei due framework

Per i programmatori interessati alle differenze di prestazioni relative tra i due framework, c'è poca differenza tra i due. Il motore personalizzato di Deno scritto in Rust si sovrappone a un framework di base che è ancora il motore V8. In definitiva, sia Deno che Node sono comparabili in quasi tutti i casi dal punto di vista delle prestazioni.

Questo sembra essere il caso indipendentemente dal fatto che il codice risultante venga eseguito sul server o sul client. Con i rendimenti delle prestazioni che non vengono presi in considerazione nella decisione, sei libero di scegliere il framework con cui ti senti più a tuo agio.

Ryan Dahl, il creatore di entrambi i framework, ha offerto una serie di ragioni per la sua creazione di Deno. Sebbene abbia menzionato diversi fattori, dall'incapacità di incorporare correttamente le promesse in molte API al sistema di compilazione scelto, le prestazioni non facevano parte del processo.

Nodo vs Deno: qual è la scelta giusta?

Sotto il cofano, sia Node.js che Deno sono framework notevolmente simili. Entrambi eseguono JavaScript utilizzando il motore V8 con prestazioni e capacità simili. Sebbene ci siano alcune differenze nella sintassi, nella gestione dei pacchetti e nel supporto integrato, la scelta di quale utilizzare è in gran parte basata sulle proprie preferenze.

Node vanta un ecosistema incredibilmente grande, ma Deno ti consente di estrarre le tue dipendenze da qualsiasi fonte. In definitiva, dovrai esaminare da vicino il tuo stile di sviluppo e determinare quale piattaforma è più adatta a te.