O NodeJS é uma plataforma de desenvolvimento de software em JavaScript que permite aos desenvolvedores criar aplicações web de alto desempenho e alta escalabilidade. Ele é baseado no motor de JavaScript V8 do Google Chrome e usa um modelo de I/O não bloqueante, o que o torna leve e eficiente. Este capítulo irá introduzir alguns conceitos básicos de NodeJS.
1. Motor V8
O motor V8 é um interpretador de JavaScript open-source desenvolvido pelo Google para o Chrome. Ele compila o código JavaScript em código de máquina antes de executá-lo, em vez de usar um interpretador. O V8 pode rodar standalone, ou pode ser incorporado em qualquer aplicativo C++. O NodeJS utiliza o V8 como seu motor de execução, e também expõe várias das suas funcionalidades através de uma API.
2. Event Loop
Um dos principais conceitos em NodeJS é o event loop. Ele é responsável por agendar tarefas não bloqueantes para serem executadas no futuro. Cada vez que um script NodeJS inicia, um event loop é criado. Este loop é uma entidade que aguarda tarefas, executa-as e depois dorme, esperando por mais tarefas. As tarefas podem ser agendadas para execução imediata, ou para execução em um ponto no futuro.
3. I/O Não Bloqueante
NodeJS usa um modelo de I/O não bloqueante, o que significa que as operações de I/O, como leitura e escrita de arquivos, acesso a rede, etc., não bloqueiam a execução de outros códigos JavaScript. Em vez disso, estas operações são delegadas ao sistema operacional, que as executa em segundo plano. Quando a operação de I/O está completa, uma callback é agendada para execução no event loop.
4. Módulos
NodeJS usa um sistema de módulos para organizar o código. Cada arquivo JavaScript pode ser um módulo, e cada módulo tem seu próprio escopo. Isso significa que as variáveis definidas em um módulo não são visíveis em outros módulos, a menos que sejam explicitamente exportadas. Os módulos podem exportar funções, objetos ou valores, que podem então ser importados por outros módulos.
5. NPM
NPM é o gerenciador de pacotes do NodeJS. Ele é usado para instalar e gerenciar dependências de pacotes. Cada aplicativo NodeJS tem um arquivo package.json que lista suas dependências. Quando você executa npm install, o NPM olha para este arquivo e instala todas as dependências listadas nele. O NPM também fornece um repositório de pacotes, onde os desenvolvedores podem publicar e compartilhar seus pacotes de código.
6. Callbacks
NodeJS faz uso intensivo de callbacks. Uma callback é uma função que é passada como argumento para outra função, e que é chamada quando uma certa condição é atendida. Em NodeJS, as callbacks são muitas vezes usadas para lidar com operações de I/O não bloqueantes. Quando uma operação de I/O é concluída, a callback correspondente é agendada para execução no event loop.
Esses são alguns dos conceitos básicos de NodeJS. Compreender esses conceitos é fundamental para o desenvolvimento eficaz de aplicações NodeJS. No próximo capítulo, iremos explorar como esses conceitos são aplicados na prática, ao criar APIs em NodeJS.