O que é?InovaçãoTransformação Digital

Como o Deno pode ajudar a resolver problemas do Node.js?

A transformação digital exige que as empresas busquem soluções que dinamizem seus negócios. Então, elas dependem de quão rápido os desenvolvedores conseguem entregar os projetos. Para que esses profissionais se tornem ágeis e produtivos, precisam ter boas ferramentas disponíveis para o trabalho. O Deno é uma delas.

Trata-se de uma opção interessante para quem não se adapta bem ao Node.js. Ambos os programas foram desenvolvidos pelo mesmo criador, mas o Deno traz mais segurança para o ambiente de execução do JavaScript.

Quer entender melhor sobre o tema? Confira neste artigo o que é o Deno, como ele pode ser usado e que tipo de problemas pode solucionar!


O que é o Deno?

Deno é um tempo de execução para JavaScript e TypeScript usado fora de um navegador. Foi criado por Ryan Dahl, fundador do Node.js em 2009, com função semelhante ao projeto original. Serve como opção para desenvolvedores que não gostam do gerenciador de pacotes npm ou simplesmente querem um ambiente de tempo de execução mais seguro.

O programa busca resolver as deficiências do Node — os nomes inclusive são anagramas. O projeto é um esforço recente de Dahl para reinventar o Node.js de acordo com a evolução do JavaScript nos últimos anos. A principal diferença é que ele inclui o compilador TypeScript em sua imagem executável.

Uma observação, no entanto: o Deno ainda está em desenvolvimento. Por isso, é recomendável que os desenvolvedores sem problemas com o Node.js continuem a produzir da mesma forma.


Diferenças entre Deno e Node.js

Para entender a aplicação do Deno nos projetos de transformação digital e por que ele agrega segurança às informações, precisamos observar o histórico do Node.js. Quando esse ambiente de execução foi desenvolvido em 2009, o JavaScript não tinha uma série de funcionalidades que seriam úteis a ele. Mesmo que algumas tenham sido adicionadas ao longo dos anos, outras podem ser encontradas no TypeScript.

Alguns eventos e callbacks do JavaScript têm sido essenciais desde sempre, mas podem encaminhar para códigos complicados, principalmente para cadeias de ações assíncronas. Assim, são as promessas que permitem uma melhor leitura da sintaxe.

Esses objetos de retorno representam o sucesso ou fracasso da operação assíncrona. A eles, é possível anexar callbacks, em vez de transformá-las em uma função.

Quando o desenvolvedor consegue declarar uma função async, ele simplifica a sintaxe, podendo usar await para pausar sem bloqueio até que uma promessa seja estabelecida.

Quando o Node.js foi criado, o padrão para os módulos JavaScript era CommonJS, que é suportado pelo npm. Desde então, o comitê do ECMAScript passou a usar oficialmente o ES Modules, suportado pelo jspm — e pelo Deno também.

As matrizes digitadas são uma API do ES6 para manipular dados binários, os quais poderiam ter sido usados pelo Node.js. A falta de suporte a esses dados levou a alguns problemas de design no programa. Enquanto o Deno utiliza as matrizes digitadas para manipular dados binários brutos, o Node.js teve que se adaptar e agora também suporta essas estruturas para o código do usuário.

E o TypeScript?

O TypeScript é um superconjunto digitado de JavaScript que compila para o JavaScript simples — ES3 ou superior, mas é configurável. Ele adiciona tipos, classes e módulos opcionais à linguagem de dados e suporta ferramentas para aplicativos de JavaScript em grande escala.

Vale relembrar que o Deno contém uma imagem do compilador TypeScript como parte de seu tempo de execução. Então, se o desenvolvedor passar um arquivo TypeScript para o ambiente de execução, ele será compilado antes em JavaScript e só depois será passado para o mecanismo V8.


Que problemas o Deno é capaz de resolver? 

Ao projetar o Deno como forma de inovação do Node.js, Dahl procurou resolver três problemas de design que foram identificados. Veja quais são!

Sistema de módulos

O sistema de módulos do Node.js é o CommonJS. Segundo Dahl, foi mal projetado, trazendo uma distribuição centralizada. O Deno buscou simplificá-lo e passou a utilizar o ESModule como padrão.

Quantidade de APIs

Embora um marketplace de APIs ajude o desenvolvedor, o Node.js utiliza muitas aplicações legadas que precisam de suporte. Isso torna os processos mais demorados e complexos, ainda que o projeto conte com um Swagger para a documentação.

Segurança

A falta de segurança é um problema que muitos desenvolvedores encontram no Node.js na hora de desenvolver seus projetos. No Deno, as bibliotecas de terceiros podem ser utilizadas com menos preocupações, já que o ambiente restringe o acesso de disco, rede, subprocessos e variáveis.


Entenda como o Deno funciona

Então, o Deno evita o acesso dos elementos citados ao seu ambiente de execução, garantindo sua privacidade. Esse padrão, no entanto, não significa que não seja possível permitir a conexão. Se você precisar, pode fazer a opção a partir de uma linha de comando específica, cuja granulação pode ser determinada pelo usuário. Exemplos:

--allow-read=/tmp

--allow-net=google.com

Outra medida para aumentar a segurança no seu funcionamento é que o Deno termina a execução diante de erros não detectados. Na via contrária, o Node.js continua a executar normalmente nesse contexto, levando a resultados imprevisíveis.


As vantagens dos módulos do Deno

Em relação aos módulos do Deno, o funcionamento traz uma série de vantagens que facilita o trabalho do desenvolvedor para levar melhor experiência aos processos de transformação digital. Se o CommonJS do Node.js exige senhas originadas em npmjs.com para todos os módulos — tanto os padrões como de terceiros — o ES Modules importa diretamente a senha da URL desejada.

Os módulos podem ser hospedados em qualquer lugar, sem usar um repositório centralizado para terceiros. Além disso, são sempre armazenados em cache e compilados localmente, sem atualizações automáticas. Se o usuário desejar, ele mesmo deve fazer a solicitação.

Com isso, torna-se possível executar o Deno em qualquer programa disponível no computador, uma vez que as importações tenham sido resolvidas — inclusive em situações sem conectividade.

Todavia, o Deno tem a sua própria coleção centralizada de módulos padrões sem dependência externa. Ela fica no servidor do deno.land e é revisada por uma equipe especial. Trata-se de uma porta solta da biblioteca padrão do Go.

Enquanto o protótipo do Deno foi escrito inicialmente na linguagem do Go, conflitos levaram Dahl e seus colaboradores a reescrevê-lo para V8, Rust e Tokio. A biblioteca padrão foi implementada no TypeScript.

Com essas vantagens, o Deno é um ambiente adaptável a projetos pequenos em TypeScript, facilitando a criação de soluções para transformação digital. Dahl acredita que ele não chegará a afetar o sucesso do Node.js mas deve se tornar uma escolha viável também para projetos de grande escala com a versão 1.0

Gostou deste artigo? Então continue no blog e leia mais conteúdos interessantes!