Será Deno uma melhor alternativa ao Node.js?

Juliana Gouveia
MCTW_TDW
Published in
6 min readFeb 1, 2023

A comparação entre os dois irmãos.

É importante para um desenvolvedor entender quais ferramentas deve usar de forma a conseguir desenvolver um projeto de forma mais eficiente. Para tal, e com a “oferta” que existe atualmente, é fundamental perceber em que é que as mesmas se distinguem de modo a ser possível concluir, também, qual a melhor para o ambiente de trabalho de qualquer profissional na área. Neste caso, estará em cima da mesa uma análise entre o Node.js e o seu irmão, Deno, que tem vindo a ser uma questão cada vez mais atual.

Node.js vs Deno

Para contextualizar, o Deno.js surge quase 10 anos após a criação do Node.js, e, curiosamente, ambos foram criados pela mesma pessoa, Ryan Dahl. Então, porque é que Deno surgiu? Será uma melhor alternativa ao Node?

Em 2018, Ryan Dahl expôs, numa palestra, uma lista de arrependimentos após a criação do Node.js. Então, o Deno surge uma vez que Dahl considerou que existiam alguns problemas de pacotes inerentes ao Node.js para corrigir, passando por remover um conjunto de bibliotecas já desatualizadas. Assim, Ryan Dahl procurou, também, fornecer mais segurança para a plataforma — uma das suas preocupações principais.

Palestra sobre os 10 arrependimentos de Ryan Dahl em relação ao Node.js

Afinal, o que é o Node.js?

“Node.js is an open-source, cross-platform JavaScript runtime environment.”

O Node.js foi apresentado em dezembro de 2009, onde ganhou bastante reconhecimento pela Google e pela Microsoft. Trata-se de um ambiente de execução em JavaScript de código aberto que executa código fora de um navegador Web, correndo no motor V8 — mecanismo criado pela Google que permite converter o código JavaScript num código de máquina mais rápido.

Como funciona na prática e quais as suas vantagens?

O Node.js veio revolucionar o desenvolvimento web. Ele permitiu aos desenvolvedores trabalhar com JavaScript no lado do servidor, possibilitando uma comunicação mais eficiente entre o servidor e o cliente. Além disso, a popularidade do Node.js deve-se, também, à sua facilidade de uso, escalabilidade e desempenho, bem como à grande comunidade de desenvolvedores que fornece recursos e suporte.

Atualmente é possível ver o uso do Node.js em grandes empresas como a Netflix, o Twitter, a Uber, entre muitas outras.

Enorme repositório

“Aproximadamente 1,3 milhões de pacotes no registo do NPM em abril de 2020.”

Uma das grandes vantagens em usar Node.js é o seu enorme repositório de pacotes de código aberto, o maior até à data. Ele utiliza um sistema de gerenciamento de pacotes centralizado, o Node Package Manager (npm), que permite a importação de múltiplos pacotes. Esta grande variedade de opções torna o desenvolvimento mais fácil e eficiente, já que os desenvolvedores podem facilmente configurar projetos e resolver problemas de compatibilidade.

Apenas JavaScript

Independentemente dos pontos de vista, o, o Node.js é baseado apenas em JavaScript, o que permite que o desenvolvimento frontend e backend seja igual e mais fácil. Isto pode representar aspetos positivos, uma vez que simplifica o trabalho de um desenvolvedor; o código poderá ser reaproveitado e, consequentemente, os custos de manutenção serão mais reduzidos.

Esta uniformidade tem sido um grande benefício para o desenvolvimento web, como é possível ver no caso da Netflix.

Flexibilidade e Simplicidade

O Node.js apresenta uma enorme flexibilidade através do seu repositório, dando a possibilidade de se adaptar às necessidades do desenvolvedor com facilidade. Para além disso, é uma “plataforma” de código aberto que ajuda na criação de projetos em tempo real.

Comunidade

Sem dúvida que um dos pontos positivos do Node.js é ter uma comunidade grande e ativa. Este ponto permite obter ajuda de diversas pessoas em relação aos mais variados problemas que um developer pode ter. Para além disso, para um principiante, torna-se mais fácil aprender algo onde lhe seja possível obter muita documentação e informação sobre o assunto.

No entanto, e como tudo na vida, nada é perfeito. E o Node.js não foge à regra. Uma das principais falhas apresentadas é relativa à segurança. Neste ponto, é sempre necessário correr todos os pacotes necessários dentro do node-modules da aplicação. Por fim, não apresenta a atualização de Promises e Async/Await, uma vez que essa atualização do JavaScript surgiu após a sua criação, o que leva a pensar sempre em soluções alternativas de forma a ser possível resolver um problema.

Então, o que é Deno? Em que se distingue do seu irmão?

Deno is a simple, modern and secure runtime for JavaScript and TypeScript that uses V8 engine and is built in Rust.”

Deno traduz-se numa nova maneira de escrever e renderizar server-side JavaScript, mas de forma mais segura e estável, uma vez que usa um ambiente de sandbox seguro. Para além disso, é autossuficiente, visto que não necessita da instalação de dependências externas.

Como funciona na prática e quais as suas vantagens?

O Deno surge como uma versão melhorada do Node.js, mais atual e moderna, tendo o seu principal foco na segurança e arquitetura.

Segurança Primeiro

Neste ponto, o Deno revela ser mais seguro, uma vez que usa um ambiente de sandbox. Isto significa que o runtime não conseguirá ter acesso aos vários ficheiros do sistema, pelo que cabe ao desenvolvedor dar acesso aos mesmos. O seguinte exemplo permite compreender como funciona este sistema na prática.

Deno requests write access to "/Users/user/folder/hello.txt". Grant? [a/y/n/d (a = allow always, y = allow once, n = deny once, d = deny always)]

Deno Modules

O Deno usa um sistema aberto, na medida em que permite importar os pacotes através de URL, desde que seja compatível com HTTP. A vantagem deste método, ao invés do NPM, é que permite importar o pacote quando necessário, através de um import, e salvá-lo na memória.

O Deno apresenta um sistema de pacotes descentralizados, uma vez que, quando os módulos são importados, eles são guardados em cache. Assim, caso seja necessário usar o mesmo pacote em dois ficheiros locais distintos, só é necessário fazer o import uma vez, num ficheiro, e de seguida, exportá-lo para o outro. O exemplo a seguir mostra como seria possível fazer um import:

import { assertEquals } from "https://deno.land/std/testing/asserts.ts";

TypeScript

Com o Deno é mais fácil e simples usar TypeScript, uma vez que possui um compilador do mesmo, evitando qualquer configuração ou instalação à parte. Para tal, basta adicionar a extensão .ts do final do ficheiro, como é possível ver no seguinte exemplo:

Ficheiro.ts

Promises

Uma das vantagens do Deno passa pelo uso de Promises, uma vez que o Deno é mais recente, e, portanto, mais atual. Como mencionado, esta vantagem deve-se ao facto do Node.js ter sido criado numa altura em que JavaScript não tinha o conceito de Promises ou Async/Await. O Deno, por sua vez, já possui esta ferramenta mais recente de JavaScript, fazendo com que o seu uso seja mais eficaz, bem como se torna possível trabalhar com código assíncrono com maior facilidade.

E no final de contas… Será Deno uma alternativa mais moderna em relação ao Node.js?

Antes de mais, é importante reforçar que o Deno surge como uma alternativa, pelo que cabe a cada desenvolvedor avaliar as vantagens e desvantagens de ambos. O Deno possui pontos positivos, principalmente por ser mais atual e, consequentemente, fornecer ferramentas que antes não existiam, como por exemplo Promises e Async/await. No entanto, o Deno está numa fase inicial, ainda muito embrionário, pelo que a comunidade e informação à volta ainda é reduzida, e, também, poderá ser mais difícil de usar na primeira vez.

Por sua vez, o Node.js apresenta algumas limitações, principalmente no uso de APIs, dado que não possui as atualizações necessárias de JavaScript. Contudo, e independentemente de possíveis falhas, a verdade é que o Node.js já está fortemente presente entre os web developers. Este conta com uma atividade de 13 anos, o que torna muito difícil ao seu irmão ultrapassá-lo, visto que o Deno ainda só tem 4 anos de atividade.

Assim, os impactos do Deno no futuro do desenvolvimento web, por enquanto, revelam ainda ser reduzidos, uma vez que o seu irmão possui uma forte presença entre os desenvolvedores web. Para além disso, o Node.js ainda é bastante utilizado por grandes empresas, o que torna difícil a mudança. Pacotes bastante conhecidos do Node.js apresentam incompatibilidade com o Deno; a falta de experiência por parte dos desenvolvedores; a grande probabilidade de surgirem bugs são fatores que importantes pela qual explicam o porquê do Deno não ter grande popularidade atualmente. Acredito que com a maturidade que este ambiente poderá vir a ganhar, e consequentemente, com o aumento da sua comunidade, este poderá eventualmente crescer mais e mais, e vir a ser uma boa alternativa, até porque integra pontos positivos como a segurança. Por enquanto, o Node.js ainda revela ter futuro, pelo menos nos próximos tempos.

--

--