📄️ Introdução
O ExpressoTS oferece uma camada aprimorada sobre o Express.js, enriquecendo o desenvolvimento de aplicações TypeScript do lado do servidor. Ele combina a robustez do Express.js com as funcionalidades avançadas do TypeScript, facilitando a criação de aplicações escaláveis, mantíveis e legíveis.
📄️ Primeiros Passos
Comece sua jornada com o ExpressoTS, um framework TypeScript para construir aplicações Node.js escaláveis e mantíveis. Esta seção orienta você através dos conceitos fundamentais, configuração e arquitetura do ExpressoTS.
📄️ Aplicação
No coração de uma aplicação ExpressoTS está a classe App. Ela serve como a fundação para criar e configurar o servidor. Adicionalmente, a classe App permite que middlewares e provedores sejam configurados no processo de inicialização do servidor. A classe App também oferece hooks (ganchos) de ciclo de vida que permitem aos desenvolvedores executar código antes, depois e durante o desligamento do servidor. Esta seção fornece uma visão geral da arquitetura da aplicação ExpressoTS, seus componentes e o fluxo de trabalho de uma aplicação ExpressoTS.
📄️ App Container
O ExpressoTS utiliza o InversifyJS para suas capacidades de contêiner de Inversão de Controle (IoC), fornecendo um sistema robusto para injeção de dependências. Este contêiner consciente de tipos facilita a instanciação de objetos, resolução e gestão de ciclo de vida, possibilitando a criação de dependências complexas com código mínimo.
📄️ Módulos
Módulos, ou módulos de contêiner no ExpressoTS, são agregações de serviços — principalmente Controladores e suas dependências — que são gerenciados pelo contêiner do framework. Esses módulos facilitam a organização, registro e resolução de vários componentes da aplicação dentro do ecossistema ExpressoTS.
📄️ Middleware
Funções de middleware são fundamentais no ciclo de request-response (solicitação-resposta) de uma aplicação ExpressoTS, fornecendo a capacidade de executar código, modificar objetos de request-response, encerrar o ciclo de request-response ou chamar o próximo middleware na pilha. É essencial chamar next() para evitar timeouts de solicitação, a menos que seu middleware conclua o ciclo.
📄️ Controladores
Os Controladores atuam como a principal interface entre o cliente e o servidor em aplicações Node.js. Eles lidam com as requisições recebidas, validam os dados conforme o DTO de entrada, e retornam as respostas no formato DTO. Em essência, os controllers atuam como a ponte entre os clientes e as camadas de serviço, também conhecidas como casos de uso.
📄️ Casos de Uso
Do ponto de vista da UML, os casos de uso fornecem uma maneira de modelar as interações entre usuários, outros sistemas e um aplicativo de software. Um caso de uso descreve um cenário específico ou fluxo de eventos entre os atores e o sistema, levando a um determinado resultado.
📄️ Provedores
No ExpressoTS, provedores servem como melhorias modulares para uma aplicação, encapsulando funcionalidades específicas, como serviços de email, mecanismos de autenticação ou conexões de banco de dados. Essa encapsulação é essencial para preservar uma arquitetura fracamente acoplada, permitindo a troca ou atualização dessas funcionalidades sem afetar o sistema geral.
📄️ Repositórios
O padrão de repositório no ExpressoTS fornece uma camada de abstração para o acesso a dados, encapsulando operações CRUD (Criar, Ler, Atualizar, Deletar) dentro de classes de repositório. Esses repositórios atuam como intermediários entre a lógica de negócios e as camadas de mapeamento de dados, utilizando ORMs como TypeORM, Prisma ou Sequelize, para interagir com o banco de dados.
📄️ Entidades
As entidades são os componentes principais de uma aplicação ExpressoTS. Elas são os objetos que são usados para representar os dados que serão manipulados pela aplicação.
📄️ Decoradores
Aqui está uma lista completa de todos os decoradores que estão disponíveis no ExpressoTS, bem como uma breve descrição do que eles fazem.
📄️ Injeção de Dependências
Dependency Injection (DI) é um padrão de design usado no desenvolvimento de software que envolve fornecer a um objeto as instâncias das classes necessárias para executar suas tarefas, em vez de fazer com que ele mesmo construa essas instâncias. Este processo de fornecer instâncias é chamado de injetar nelas, daí o termo Injeção de Dependência.
📄️ Dependências
O propósito desta seção é listar todas as dependências usadas pelo ExpressoTS e nossa visão sobre o gerenciamento de dependências.
📄️ Código de Status
O código de status é uma forma de representar o resultado de uma requisição. Essas respostas HTTP indicam se uma solicitação HTTP específica foi concluída com êxito. As respostas são agrupadas em cinco classes:
📄️ Gerenciamento de Error
Quando se trata de tratamento de erros nas APIs TypeScript do Node.js, existem várias práticas recomendadas e abordagens que você pode seguir. O ExpressoTS fornece uma maneira simples e fácil de lidar com erros.
📄️ Teste
Os testes de unidade e os testes de integração são importantes em qualquer processo de desenvolvimento de aplicativos porque servem a propósitos diferentes.
📄️ Motor de Renderização
ExpressoTS melhora as capacidades do servidor web do Express.js, proporcionando uma experiência simplificada para renderização de views. ExpressoTS suporta vários motores de renderização prontos para uso, incluindo EJS, PUG e Handlebars (HBS). Isso facilita para os desenvolvedores começarem a renderizar views sem necessidade de configuração adicional, pois são fornecidas configurações padrão para cada motor suportado.