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) Author

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) Author

Nossa, verdade valeu hahaha

Classic DEV Post from 2020:

js visualized

🚀⚙️ JavaScript Visualized: the JavaScript Engine

As JavaScript devs, we usually don't have to deal with compilers ourselves. However, it's definitely good to know the basics of the JavaScript engine and see how it handles our human-friendly JS code, and turns it into something machines understand! 🥳

Happy coding!