JavaScript fora do browser ⬢ I/O (entrada e saída) assíncrona e não bloqueante ⬢ Concorrência baseada em eventos ⬢ Consiste em 3 componentes principais: V8 Engine Libuv Standard lib
Baixo consumo de memória ⬢ Alta performance ⬢ Modelo de concorrência baseado em eventos permite receber várias requisições sem grande impacto no servidor ⬢ Utilização da mesma linguagem no backend (servidor) e no frontend (browser) da aplicação
e objetos ⬢ Dinamicamente tipada ⬢ Modelo de concorrência não bloqueante utilizando callbacks ⬢ Funções são first-class, ou seja, tratadas como qualquer outra variável, e não algo especial
O Node suporta dois sistema de módulos: CommonJS e ESM (EcmaScript Modules) ⬢ Nos exemplos usaremos CommonJS ⬢ Duas variáveis principais: require e module.exports ⬢ Módulos podem exportar múltiplas variáveis que podem ser importados por outros módulos
standard lib do Node já possui várias ⬢ Pacotes são distribuídos através do npm ⬢ Há aproximadamente 1.3 milhão de pacotes disponíveis no npm ⬢ O programa para interagir com o npm é instalado automaticamente quando se instala o Node ⬢ Pacotes instalados são listados no package.json e salvos em node_modules
(https://eloquentjavascript.net/) ⬢ Estudar o modelo de assincronia (https://github.com/getify/You-Dont-Kno w-JS/blob/1st-ed/async%20&%20perform ance/README.md) ⬢ Estudar como funcionam servidores web e verbos HTTP ⬢ Aprender a interagir com um banco de dados real a partir de uma aplicação Node
não é uma linguagem amigável para quem vem de outras linguagens? ⬢ Node ainda não está preparado para uso em produção? ⬢ O único banco de dados compatível com Node é MongoDB? ⬢ Não existe padronização para projetos Node? ⬢ Tudo muda o tempo todo, tornando impossível de se acompanhar?