1
resposta

Node.js e Javascript

O javascript é comum de ser interpretado correto? É possivel que seja compilado também? O node.js é responsável por fazer uma tradução mista (compilar e interpretar) para o Javascript?

1 resposta

Olá, Ingridi! Espero que esteja tudo bem com você!

Desculpe pelo atraso na resposta mas aqui vamos nós :)

Suas perguntas são muito interessantes e as dúvidas são bem comuns mesmo. Para conseguirmos responder, vamos olhar um pouco sobre o que é o JavaScript e como ele funciona.

 

JavaScript


 

O JavaScript foi introduzido em 1995 como uma forma de adicionar dinamicidade à páginas da web no navegador Netscape Navigator. Desde então, a linguagem foi adotada por todos os outros principais navegadores gráficos da web. Ela tornou possíveis o desenvolvimento das aplicações modernas da web - aplicações com os quais você pode interagir diretamente sem recarregar a página a cada ação. JavaScript também é usado em sites mais tradicionais para fornecer várias formas de interatividade de forma mais inteligente.

Fonte: Tradução livre do livro Eloquent JavaScript https://eloquentjavascript.net/00_intro.html

Dessa forma, com uma explicação bem simples, JavaScript foi pensado para ser rápido, dinâmico e acessível. Por esse motivo faz muito mais sentido que seja uma linguagem interpretada, onde você não precisa configurar todo um ambiente complexo para subir ou trabalhar suas aplicações.

Por outro lado, há uma linguagem criada pela Microsoft chamada de TypeScript, que é um superset do JavaScript.

  • O que isso significa?

TypeScript utiliza o conhecimento de JavaScript e adiciona outros recursos que não aparecem no JavaScript como tipagem estática para que o código final tenha menos defeito, menos bugs. E para que o TypeScript funcione, ele é compilado e convertido para ECMAScript.

Além disso, o código TypeScript precisa ser traduzido/convertido para um código em ECMASCRIPT para que seja entendido pelo navegador. Lembre-se que apenas ECMASCRIPT é suportado pelo navegador.

Muitos afirmam que o Babel, inclusive na documentação oficial, é autointitulado como compilador. No entanto, essa ferramenta funciona mais como um transpilador.

  • E o que ele faz?

O Babel consegue adaptar as novas versões do ECMAScript para que sejam lidas em navegadores antigos, de forma simples ele transpila (transforma) um código ECMAScript (JavaScript) para outro código JavaScript que seja compatível com a maioria dos navegadores e versões. Bem legal, né?

 

E o Node.js?


 

JavaScript nasceu para atender demandas voltadas ao Front End, e como as necessidades só vão aumentando de acordo com o crescimento tecnológico, surgiu também a ideia de utilizar uma mesma linguagem no lado do cliente e do servidor para otimizar processos e serviços. Dessa forma, o Node aparece como uma alternativa viável para programação Back-End por se tratar de um ambiente para desenvolvimento utilizando a linguagem JavaScript. De acordo com sua definição oficial, o Node é um runtime, que nada mais é do que um interpredador de JavaScript. O Node foi criado para construir aplicações web escaláveis, como podemos ver na sua documentação oficial: https://nodejs.org/en/about/

Node.js foi inclusive utilizado pela NASA para criar uma API que integra três bases de dados em um só, justamente para otimizar o acesso aos dados. https://openjsf.org/wp-content/uploads/sites/84/2020/02/Case_Study-Node.js-NASA.pdf

Mas o que isso significa?

O Node é capaz de interpretar um código JavaScript, igual ao que o navegador faz. Sendo assim, quando o navegador recebe um comando em JavaScript, ele o interpreta e depois executa as instruções fornecidas. O Node é fantástico porque podemos enviar instruções sem precisarmos de um navegador ativo, basta utilizarmos o terminal para observarmos a execução de um programa construído em JavaScript.

Para que todo esse processo seja possível de ocorrer fora do navegador, o Node utiliza uma outra ferramenta chamada de Chrome's V8 JavaScript engine. É esse motor V8 do Chrome que compila e executa o código JavaScript no lugar de apenas interpretá-lo.

 

Para saber mais