Skip to content

Latest commit

 

History

History
109 lines (62 loc) · 5.16 KB

nodejs.md

File metadata and controls

109 lines (62 loc) · 5.16 KB

Node.js

  • Até 2009, o JavaScript (JS) era utilizado, principalmente, do lado do cliente a partir do navegador.

  • Utilizando o motor JavaScript do Google, o V8, além de outros componentes (como o C++), Ryan Dahl criou o Node.js, um ambiente de execução JS externo ao navegador.

  • Com isso, é possível executar códigos JS no back-end por meio de diversos módulos desenvolvidos por diferentes comunidades.

  • Você verá diversas aplicações e frameworks que utilizam Node.js, como o React, ExpressJS, Prisma, AdonisJS, dentre outros.

Conceitos e definições

JavaScript is a single-thread language

 console.log('A');
 
 setTimeout(() => {
  console.log('B');
 }, 3000);
  
 console.log('C');

Output

A 
C 
B

JavaScript runtime environment
From: Why JavaScript is a single-thread language that can be non-blocking ?

Event Loop

The event loop is what allows Node.js to perform non-blocking I/O operations - despite the fact that JavaScript is single-threaded - by offloading operations to the system kernel whenever possible.

From: What is the Event Loop?

Quanto de JavaScript é preciso saber para usar o Node.js?

  • Fundamentos: objetos, vetores, condicionais e funções.

  • HTTP, JSON, Callback, Promises, Arrow functions, ES6 and beyond.

A lista completa está disponível aqui.

Modules

Modules in JavaScript – CommonJS and ESmodules Explained:

  1. CommonJS: require/module.exports
  2. ESmodules: import/export

Package manager

  1. NPM: gerenciador padrão do Node.js.
  2. Yarn e pNPM: gerenciadores alternativos.
  3. Repositório: npmjs

Referência e outras informações aqui.

Node.js Project

Uma sugestão de estrutura de projeto está definida aqui.

Deno

O Deno é outro ambiente de execução JavaScript, TypeScript e WebAssembly desenvolvido também com a ajuda do Ryan Dahl. O motor V8 também foi utilizando, agora com implementações em Rust.

Este ambiente foi anunciando em 2018 na JSConf por Ryan Dhal a partir da seguinte palestra: 10 Things I Regret About Node.js - Ryan Dahl - JSConf EU. Além de indicar alguns problemas de design do Node, algumas possíveis questões de controle e de segurança acerca do gerenciamento de dependências (npm, node_modules).

O Deno suporta apenas ESModules, URLs para dependências locais e remotas, não necessita de um gerenciador de dependências (mas, as últimas versões suportam o npm), possui restrições de acesso ao sistema de arquivo e à rede por padrão, além de outros fatores.

Bun

O Bun é o mais recente ambiente de execução JavaScript e TypeScript. Ele é escrito utilizando a linguagem Zig e utiliza o motor JavaScriptCore/WebKit da Apple. O Node.js e o Deno utilizam o motor V8.

O Bun possui compatibilidade com módulos ESM e Commonjs, além de suportar diversas APIs nativamente. O ganho de performance pode estar associado ao motor utilizado.

Os resultados sugerem que ele tem uma performance melhor que o Node.js e o Deno. Contudo, o Bun ainda está em versão inicial (1.0.14 enquanto eu escrevo) e eu sugiro não utilizá-lo (ainda) como principal runtime em projetos em produção.

Enfim, ele carece de mais testes antes de se tornar uma opção principal. Use, mas com cuidado!

Outras Referências

Código Fonte TV: Node.js // Dicionário do Programador

Código Fonte TV: Deno (A alternativa ao Node.js !?) // Dicionário do Programador

Código Fonte TV: Bun: O JavaScript Nunca Mais Será o Mesmo!

Código Fonte TV: Node, Deno e Bun: A Batalha dos Runtimes JavaScript [AO VIVO]

Deno land - Youtube channel

Felipe Rocha - dicasparadevs: Curso de Node.js Para Completos Iniciantes

Rocketseat: COMEÇANDO COM NODE.JS EM 2022

Rocketseat: Node.js: Iniciando da teoria à prática | Masterclass #11