Conhecendo o Deno

Tecnologia

É um novo runtime JavaScript e TypeScript baseado na engine V8 de execução simples criado por Ryan Dahl. Para quem não conhece, Ryan Dahl foi o criador do Node.js em 2009. O Deno foi apresentado pela primeira vez no “JSConf EU 2018” em uma talk chamada 10 coisas que eu lamento pelo Node.js,  onde Ryan Dahl falou sobre alguns arrependimentos em algumas features do node.js, como por exemplo o sistema de módulos, segurança, node-gyp, node_modules entre outras coisas. Bom introdução feita, agora vamos estar conhecendo o Deno?

Um ponto que deve ser levado em consideração é que ele em nenhum momento falou sobre o Node ou o JavaScript serem algo ruim, só que algumas coisas poderiam ter sido feitas de formas diferentes.

Deno, com sua versão 1.0.0 estável sendo lançada em 13 de maio de 2020, foi construído totalmente do zero. Inicialmente  escrito utilizando a linguagem Go, mas reescrito em Rust para evitar possíveis problemas com garbage collector.

O principal objetivo é o de resolver os problemas que Ryan acredita existirem no node, ele apresenta uma tecnologia baseada em um conjunto de regras e paradigmas que permitem que o desenvolvimento futuro da plataforma sigam algumas diretrizes, como suporte nativo ao TypeScript, e segurança, onde toda operação que é chamada fora do contexto da sandbox deve ser autorizada.

Além disso o Deno já vem com alguns ferramentas como debugger, formatter, test, bundler e deno install, onde podemos instalar e distribuir nossos códigos entre outras ferramentas.

Instalação

Vamos começar a brincar com o Deno. Primeiramente precisamos instalá-lo.Na sua página inicial temos os comandos para instalar em vários S.O, https://deno.land/#installation, depois de instalado você pode checar alguns comandos com:

deno help

Hello deno

Bora começar nosso Hello Deno! Antes de criar nossa aplicação, vamos rodar um exemplo pronto do Deno. Na sua linha de comando digite:

deno run https://deno.land/std/examples/welcome.ts

Devemos ter uma saída como essa:

Legal. Mas como eu faço pra chamar o famoso listen(3333)? Primeiramente vamos criar novo projeto, onde e dar o nome de “hello-deno”.

Powered by Rock Convert
mkdir hello-deno
cd hello-deno

Agora vou abrir nosso projeto no vscode e criar um arquivo chamado app.ts. Lembrando que eu posso trabalhar com arquivos .js, mas iremos perder alguns benefícios do TypeScript. Arquivo criado, agora vamos criar nosso server.

import { serve } from "https://deno.land/std/http/server.ts";
const s = serve({ port: 3333 });
console.log("http://localhost:3333/");
for await (const req of s) {
 req.respond({ body: "Hello Deno\n" });
}

Feito, hora de rodar o código.

deno run app.ts

Eita! Mas já começa dando erro?

Lembra que um dos princípios do Deno é ser seguro e tudo que for executado fora da sandbox precisa de permissão? Então para termos sucesso ao executar esse trecho de código, precisamos rodar utilizando a flag –allow-net, bora tentar novamente.

deno run --allow-net app.ts

success! Agora podemos bater na rota http://localhost:3333/ e veremos nosso Hello Deno

Se dermos uma olhada no código, veremos que estamos importando a função serve de uma URL “https://deno.land/std/http/server.ts“. Lembra que o Deno diferente do node, não utiliza do npm para gerenciar seus módulos? Todos os módulos padrão do Deno são encontrados em “https://deno.land/std” e os módulos de terceiros em “https://deno.land/x“.

Quando utilizamos qualquer módulo e damos o comando deno run é feito o download do módulo e deixado em cache, então ao executar o código novamente não será feito outro download. Caso você queira atualizar todos os módulos padrão do Deno você pode executar: 

deno run --allow-net --reload app.ts

// caso queira atualizar alguma em específico 
> deno run --reload=https://deno.land/std app.ts

O Deno ainda está em fase inicial, mas demonstrou que veio com grandes ideias e princípios para competir com outros frameworks do mercado. 

Ainda temos poucas bibliotecas em relação ao node.js, mas isso tem mudado dia a dia, um projeto bem legal é o pika.dev, onde podemos encontrar alguns módulos compatíveis com Deno. Abaixo vou deixar alguns links onde você pode encontrar mais notícias sobre o Deno, e claro não deixe de nos seguir. Em breve teremos outros conteúdos sobre o Deno.