DEV Community

Cover image for O que você precisa saber sobre o Deno!?
Telles (@UnicornCoder) for Deno Land Brazil

Posted on • Updated on

O que você precisa saber sobre o Deno!?

Bom, como já sabemos e é um assunto muito falado ultimamente, recentemente fiz uma live falando do Deno e ele veio ai com a proposta de ser uma nova Runtime de JavaScript assim como o Node, mas com o foco em segurança e performance.

Vamos falar aqui sobre algumas particularidades do Deno e umas perguntas que surgiram como o lançamento da v1.0.

Uso do ES6

O Deno utiliza o ES6 como padrão no desenvolvimento, ou seja não vamos precisar de um babel da vida para transpilar um Common JS assim como faziamos no NodeJS.

TypeScript

Como muitos já comentaram o TS á algo nativo no Deno e ainda temos uns problemas de performance por estar usando o transpilador da Microsoft, mas isso ja esta no radar de melhorias com a possível solução de reescrita do transpiler em rust (linguagem padrão do Deno).

Gerenciamento de Pacotes (Módulos)

Como vocês habitualmente sabem o node tem o NPM para gerenciar seus pacotes e assim ele cria uma pasta no projeto chamada node_modules contendo os pacotes instalados(baixando-os).

No Deno temos duas categorias de pacotes, os nativos chamados de standards ou str e os de terceiros que são chamados de x, e podem ser encontrados com facilidade no site do Deno.

Site Deno

No Deno isso funciona de uma maneira diferente, pois o Deno baixa o que você precisa em cache em uma única pasta no seu SO.
Mas Diego, que pasta é essa? Pra onde vai esses arquivos? Posso acesssar eles?
-Sim, voce pode acessar esses arquivos e para que voce saiba onde eles estao é somente usar o comando:

$ deno info

Com esse comando ele vai trazer pra voce as seguintes informações:

Deno Info

  • Diretório do Deno
  • Diretório dos seus módulos
  • Cache do compilador TypeScript

Como saber os pacotes instalados na aplicação

Uma coisa que fiquei preocupado era se tinha a existência de um package.json assim como existe no node para sabermos o que tem instalando na nossa aplicação.
E sim, existe a possibilidade de ter um arquivo contendo esses módulos baixados sendo listados.

Para isso precisamos criar um arquivo import_map.json e dentro dele ter a seguinte estrutura:


// import_map.json

{
   "imports": {

   }
}

Enter fullscreen mode Exit fullscreen mode

Mas além disso precisamos passar uma flag no nosso CLI
--importmap=import_map.json para dizer ao Deno que queremos escrever nesse arquivo como o nome dos pacotes, assim:

$ deno run --allow-net --importmap=import_map.json --unstable <nome do arquivo_raiz>.ts, mas na documentação mesmo diz que essa funcionalidade pode não funcionar agora por estar unstable.

Arquitetura do Deno (por baixo dos panos)

O Deno utiliza o Tokyo como Run-time para realização dos loops assíncronos de eventos na aplicação, ele é escrito em Rust.

Temos a camada de Recursos com algumas libs stdio, TCP Socket, child process, entre outros recursos...(Falaremos mais disso em outro momento).

E temos também a camada de comunicação do JS com a V8 e com o C++ sendo diretamente ligada com um modulo isolado de rusty que é o Deno.

Diagrama de arquitetura

Por fim, uma demo

API usando o Deno que criei recentemente em TS para testar o poder da Run-time, ela está salvando os dados em um banco MongoDB e usando a lib ABC pra fazer o serviço que o Express faz no Node.

Por enquanto é isso e nos vemos em breve, dúvidas ou sugestão deixem nos comentários ou nos procure nas redes Sociais!

Acompanhe nossos canais de conteúdo:

Top comments (4)

Collapse
 
lucaires profile image
Lucas Caires Rodrigues

Faltou o tutorial da API pra gente dá uma treinada! =D

Collapse
 
telles profile image
Telles (@UnicornCoder)

Ooopa, me faltava tempo, mas acabei de posta ele hahaha

dev.to/telles/criando-api-com-deno...

Collapse
 
denisrudnei profile image
Denis Rudnei de Souza

**Rust, sem o y no final

Collapse
 
telles profile image
Telles (@UnicornCoder)

Nossa, verdade valeu hahaha