Construindo Aplicações com NodeJS – 4ª Edição
Descrição do livro
O NodeJS é uma poderosa plataforma para construir de forma rápida e fácil aplicações de rede escaláveis. Utiliza um modelo de single thread, faz I/O não bloqueante, por isso trabalha sempre de forma assíncrona.
Neste livro, você aprenderá a construir uma API RESTful funcional e escalável, com testes unitários e otimizações para melhor performance, que estará pronta para ser publicada seguindo boas práticas. Será utilizada uma estrutura robusta, testável e expansível, que poderá servir como base para implementar outras aplicações HTTP com NodeJS.
Além disso, será possível revisar conceitos importantes sobre as novas features da linguagem JavaScript e aprender a utilizar diferentes bancos de dados, como Postgres, MongoDB, DynamoDB e Redis.
Construindo Aplicações com NodeJS abrange:
• O que é o NodeJS e o que pode ser feito com essa plataforma.
• Conceitos de bancos de dados relacional e não relacional.
• Conceitos de REST e boas práticas para um bom design de API.
• Como construir, testar e otimizar uma API RESTful com NodeJS, aplicando boas práticas.
• Como construir um encurtador de links com Serverless e DynamoDB.
• Novidades das versões 18 e 20 do NodeJS, como fetch, novos métodos dos arrays e SEA.
• Como utilizar top level await, integrar a sua API na camada de frontend e até fazer deploy na nuvem da AWS.
Novo na 4ª Edição:
• Mais conteúdos sobre a linguagem JavaScript
• Explicação sobre novos métodos .toSpliced, .toSorted, .toReversed
• Novos conteúdos das versões v18 e v20, como fetch e SEA
• Adicionado npm-check para gerenciamento de dependências
• Adicionado conteúdo com exemplos para Typescript
• Adicionado node --watch (novidade do v18)
• Adicionado banco dynamodb
• Adicionado keepAlive com undici
• Melhorado capítulo sobre serverless, com mais conteúdo e projeto de exemplo usando dynamodb
• Adicionado node:test (framework nativo para testes)
Ver menos ▲Sumário
- Agradecimentos
- Sobre o autor
- Prefácio
- 1 Introdução
- 1.1 JavaScript
- 1.1.1 Variáveis
- 1.1.2 Comentários
- 1.1.3 Funções
- 1.1.4 Operações
- 1.1.5 Controles de fluxo
- 1.1.6 Laços de repetição
- 1.1.7 Coleções
- 1.1.8 Template strings
- 1.1.9 Destructuring assignment
- 1.1.10 Spread
- 1.1.11 Rest parameters
- 1.1.12 Optional chaining
- 1.1.13 Default argument
- 1.1.14 use strict
- 1.1.15 ESlint
- 1.2 Instalação do NodeJS
- 1.2.1 Módulos n e nvm
- 1.2.2 Arquivo package json
- 1.3 NPM (Node Package Manager)
- 1.3.1 npm update/npm-check
- 1.3.2 npx
- 1.3.3 yarn (Package Manager)
- 1.4 Console do NodeJS (REPL)
- 1.4.1 Variáveis de ambiente
- 1.5 Programação síncrona e assíncrona
- 1.5.1 Promises
- 1.5.2 async/await
- 1.5.3 Método process nextTick
- 1.6 Orientação a eventos
- 1.7 Orientação a objetos
- 1.7.1 TypeScript
- 1.8 Programação funcional
- 1.9 Tenha um bom editor de código
- 1.9.1 Arquivo de preferências do Sublime Text 3
- 1.9.2 Arquivo de preferências do Visual Studio Code
- 1.9.3 EditorConfig org
- 1.10 Plugin para visualização de JSON
- 1.1 JavaScript
- 2 Ferramentas de linha de comando
- 2.1 Seu primeiro programa
- 2.1.1 Criando Single Executable Applications
- 2.2 Debug
- 2.3 Brincando com TCP
- 2.4 Criando um servidor HTTP
- 2.4.1 Outros endpoints
- 2.5 Nodemon/node --watch
- 2.5.1 node --watch
- 2.6 Express Generator e Fastify generate
- 2.6.1 fastify generate
- 2.7 Star Wars API
- 2.7.1 Usando Fetch em vez de Axios
- 2.1 Seu primeiro programa
- 3 REST (Representational State Transfer)
- 3.1 Exemplos de APIs
- 3.2 Estrutura da requisição
- 3.3 Estrutura da resposta
- 3.4 Restrições do REST
- 3.5 Testando a requisição
- 3.5.1 Testando a requisição com curl
- 3.5.2 Testando a requisição com o Postman ou Insomnia
- 4 Bancos de dados
- 4.1 Postgres
- 4.1.1 Modelagem
- 4.1.2 node-postgres
- 4.2 MongoDB
- 4.2.1 Modelagem
- 4.2.2 Mongoist
- 4.3 Redis
- 4.3.1 Modelagem
- 4.3.2 node-redis
- 4.4 DynamoDB
- 4.4.1 Modelagem
- 4.4.2 AWS SDK for Javascript v3
- 4.1 Postgres
- 5 Construindo uma API RESTful
- 5.1 ExpressJS
- 5.2 Middlewares
- 5.2.1 Entendendo a utilidade
- 5.2.2 Tipos de resposta
- 5.3 Controllers
- 5.4 Melhorando o listener do servidor
- 5.4.1 Cluster
- 5.4.2 dnscache
- 5.4.3 HTTP keepalive
- 5.5 API Stormtroopers
- 5.5.1 Mongoist
- 5.5.2 Mongoose
- 5.5.3 pg
- 5.6 Autenticação
- 5.6.1 PassportJS
- 5.6.2 JSON Web Token
- 5.7 Fastify
- 5.7.1 Schema
- 5.8 JSON Schema
- 5.9 Serverless
- 5.9.1 Encurtador de URLs
- 5.9.2 CRUD encurtador
- 5.9.3 Deploy AWS Lambda
- 6 FrontEnd
- 6.1 Arquivos estáticos
- 6.2 Client side
- 6.2.1 xhr
- 6.2.2 Fetch
- 6.2.3 jQuery
- 6.2.4 ReactJS
- 6.3 Server side render
- 6.3.1 Nunjucks
- 6.3.2 Handlebars
- 6.3.3 Pug
- 6.3.4 React Server Side
- 7 Testes automatizados
- 7.1 Criando testes de código
- 7.1.1 node:test
- 7.2 Jest
- 7.2.1 beforeAll,afterAll,beforeEach,afterEach
- 7.2.2 ESlint
- 7.3 Testes unitários
- 7.4 Testes funcionais
- 7.5 Testes de carga
- 7.1 Criando testes de código
- 8 Produção
- 8.1 Healthcheck
- 8.1.1 /check/version
- 8.1.2 /check/status
- 8.1.3 /check/status/complete
- 8.2 APM (Aplication Performance Monitoring)
- 8.3 Logs
- 8.4 forever e pm2
- 8.5 Nginx
- 8.5.1 compression
- 8.5.2 Helmet
- 8.6 Docker
- 8.7 MongoDB Atlas
- 8.8 AWS
- 8.8.1 unix service
- 8.8.2 Nginx
- 8.8.3 aws-cli
- 8.9 Heroku
- 8.10 Travis CI
- 8.11 GitHub Actions
- 8.1 Healthcheck
- Referências bibliográficas
- Índice remissivo
Sobre o autor
William Bruno Moraes é desenvolvedor web apaixonado por boas práticas e design patterns. Iniciou com programação web em 2008 com PHP e JavaScript. Participante ativo do Fórum iMasters, escreve artigos para seu blog pessoal e alguns outros canais. Ministra cursos de NodeJS e MongoDB no CT da Novatec. Atualmente, trabalha na BelezaNaWeb.com.br com… Ver perfil completo ▶
Livros relacionados
Recursos
Opinião dos leitores
Elézer S
O livro é atualizado e de um conteúdo riquíssimo. Valeu a pena acompanhar de ponta a ponta.






