-
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.
-
Como o Node.js funciona: https://www.youtube.com/watch?v=DiXbJL3iWVs&t=500s
-
Node built-in objects: OS, HTTP, Path, File system, dentre outros.
-
Node.js ECMAScript compatibility tables: https://node.green/
console.log('A');
setTimeout(() => {
console.log('B');
}, 3000);
console.log('C');
A
C
B
From: Why JavaScript is a single-thread language that can be non-blocking ?
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?
-
Fundamentos: objetos, vetores, condicionais e funções.
-
HTTP, JSON, Callback, Promises, Arrow functions, ES6 and beyond.
A lista completa está disponível aqui.
Modules in JavaScript – CommonJS and ESmodules Explained:
- CommonJS: require/module.exports
- ESmodules: import/export
- NPM: gerenciador padrão do Node.js.
- Yarn e pNPM: gerenciadores alternativos.
- Repositório: npmjs
Referência e outras informações aqui.
Uma sugestão de estrutura de projeto está definida aqui.
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.
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!
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]
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