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.
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:
- 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": {
}
}
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.
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)
Faltou o tutorial da API pra gente dá uma treinada! =D
Ooopa, me faltava tempo, mas acabei de posta ele hahaha
dev.to/telles/criando-api-com-deno...
**Rust, sem o y no final
Nossa, verdade valeu hahaha