Olá Web Developers! Acabou de ser lançada a versão 1.0 do Deno. Vamos conhecer esse suposto substituto do Node.js.
O que é Deno?
O Deno
, assim como o Node.js
, é um ambiente de execução de JavaScript. Ele foi feito pelo próprio criador do Node utilizando a linguagem Rust. Assim como o Node, Deno também utiliza o V8, engine de JavaScript do Google Chrome.
Por que outro interpretador de JavaScript?
Ryan Dahl, criador do Node, deu uma palestra em junho de 2018 na JSConf intitulada 10 Coisas que eu lamento pelo Node.js (10 Things I Regret About Node.js no original). Por mais que o Node tenha várias vantagens e seja muito usado, seu criador admitiu vários problemas.
Aliás, o Node.js foi criado em 2009, época em que o JavaScript nem tinha Promises
ou async/await
e nosso modo de trabalho, técnicas e boas práticas eram outras. O mundo todo era diferente. Lembre-se que sites eram feitos com tabelas, não usávamos smartphones, não havia YouTubers, etc.
Não só o Node.js possui problemas, como também várias linguagens, bibliotecas e frameworks. Todos nós, conforme vamos evoluindo na carreira de programador, aprendemos coisas novas e percebemos que algo que fizemos há algum tempo pode ser feito de maneira bem melhor. Além disso, a evolução de várias ferramentas e tecnologias também nos permite criar coisas melhores.
Isto é, com os aprendizados que Ryan Dahl teve em sua carreira, os desafios enfrentados com o Node e a evolução do JavaScript, ele pensou em criar algo novo. Logo após falar dos problemas do Node, Ryan apresentou seu novo trabalho, o Deno, que na época tinha apenas 1 mês de existência.
O Deno não apenas possui melhorias em coisas que foram consideradas ruins no Node, como o node_modules
, como também possui várias novidades que o Node não tem e que são importantes.
Deno é mais seguro
Qualquer código no Node tem o poder de acessar coisas como sua rede e HD. Por outro lado, no Deno o seu código é executado em uma sandbox segura por padrão.
Ou seja, se você não der permissão, um código malicioso não poderá acessar suas informações. Isso se assemelha ao JavaScript nos navegadores, que apenas consegue acessar coisas como a câmera se o usuário der permissão.
Curso PWA - Progressive Web Apps
Conhecer o cursoTypeScript Integrado
O Deno não interpreta apenas JavaScript. Ele também interpreta TypeScript sem que você precise instalar nem configurar nada.
Essa decisão foi baseada no crescimento do uso do TypeScript em grandes projetos que precisam lidar com complexas lógicas de negócio. Tudo no Deno foi feito com o TypeScript em mente.
Deno não precisa de NPM ou node_modules
Projetos criados com o Node utilizam o NPM para gerenciar suas dependências. Os pacotes baixados ficam guardados na pasta node_modules
, que facilmente chega a tamanhos enormes.
Assim como navegadores, o Deno sabe como buscar códigos externos. Ou seja, podemos importar o código de um arquivo passando seu endereço. Veja abaixo um exemplo da criação de um simples servidor que utiliza um arquivo TypeScript externo.
import { serve } from "https://deno.land/std@0.50.0/http/server.ts";
for await (const req of serve({ port: 8000 })) {
req.respond({ body: "Hello World\n" });
}
Promises em todo lugar
O JavaScript é famoso por sua natureza assíncrona. Porém, o Node foi criado antes do JavaScript possuir coisas como Promises e Async/Await.
Como resultado da evolução do JavaScript em união da linguagem Rust, o Deno tem um moderno sistema baseado em Promises. Isso nos permite trabalhar mais facilmente com código assícrono, além de evitar os problemas que o Node tinha em seu sistema.
Curso JavaScript Avançado
Conhecer o cursoDeno é Compatível com Node?
Ainda que Node e Deno sejam interpretadores de JavaScript, o Deno não é totalmente compatível com os pacotes do seu irmão mais velho e outras ferramentas.
No entanto, uma camada de compatibilidade está sendo criada, mas ainda está longe de ser concluída.
Já posso trocar o Node.js pelo Deno?
A princípio, sim. O lançamento da versão 1.0
do Deno indica que ele já está em uma fase estável.
Ainda assim, lembre-se que o Deno está sendo desenvolvido há pouco mais de 2 anos. Ele não é um fork do Node, foi feito totalmente do zero. Por outro lado, o Node já possui mais de uma década de vida. Ou seja, o Node é mais maduro e possui uma comunidade bem maior.
Portanto, o mais indicado é sempre analisar as necessidades do seu projeto para poder escolher a tecnologia a ser usada.