NestJS: Uma estrutura NodeJS linda e trabalhada

Imagem do NestJS

Antes de falar do NestJS vamos lembrar que nos últimos anos, graças ao Node.js, o JavaScript se tornou a “língua franca” da web para aplicativos front e backend, dando origem a projetos incríveis como Angular, React e Vue, que melhoram a produtividade do desenvolvedor e permitem a construção de aplicativos frontend testáveis e extensíveis. No entanto, no lado do servidor, embora existam muitas bibliotecas, assistentes e ferramentas excelentes para o Node, nenhum deles resolve efetivamente o problema principal – a arquitetura.

O Nest visa fornecer uma arquitetura de aplicativo pronta para uso, que permite a criação sem esforço de aplicativos altamente testáveis, escalonáveis, fracamente acoplados e de fácil manutenção.

O que é?

[wp_ad_camp_3]

O NestJS é uma estrutura para criar aplicativos do lado do servidor Node.js de forma eficiente e escalável. Ele usa JavaScript moderno, é construído com o TypeScript (porém preserva a compatibilidade com JavaScript puro) e combina elementos de OOP (Programação Orientada a Objetos), FP (Programação Funcional) e FRP (Programação Reativa Funcional).

Por trás de tudo, o NestJS faz uso do Express, permitindo o uso fácil dos inúmeros plugins de terceiros disponíveis.

O Desenvolvimento

Para começar a trabalhar com o NestJS é bem simples. Basta você clonar o repositório de um projeto em branco no Github com o modelo que deseja trabalhar (TypeScript ou JavaScript).

Lembrando que para trabalhar com o NestJS você precisa de possuir instalado em seu ambiente o NodeJS.

Criando um novo projeto usando JavaScript puro com o GIT:

$ git clone https://github.com/nestjs/javascript-starter.git meu-primeiro-projeto
$ cd meu-primeiro-projeto
$ npm install
$ npm run start

Criando um novo projeto usando TypeScript com o GIT:

$ git clone https://github.com/nestjs/typescript-starter.git meu-primeiro-projeto
$ cd meu-primeiro-projeto
$ npm install
$ npm run start

Criando um projeto do zero usando NPM:


$ npm i --save @nestjs/core @nestjs/common @nestjs/microservices @nestjs/websockets @nestjs/testing reflect-metadata rxjs

 

Estrutura

[wp_ad_camp_2]

O NestJS conta com uma estrutura bem conhecida pelos desenvolvedores Java/.NET  ele tem implementado de forma bem simples recursos que são muito utilizados.

Segue abaixo a lista de recursos que o NestJS propõe em sua estrutura atual.

Controllers

A camada de Controllers é responsável por manipular solicitações recebidas e retornar uma resposta ao cliente, e todo a parte de “Rota” já é feito nessa mesma camada.

Imagem mostrando os controllers do NestJS

Providers

Quase tudo pode ser considerado como um provedor – provider – service, repository, factory, helper e assim por diante. Todos eles podem injetar dependências através de construtor (Dependency Injection), ou seja, eles podem criar vários relacionamentos entre si. Mas, na verdade, um provedor nada mais é do que apenas uma classe simples anotada com um decorator @Injectable().

Imagem mostrando os providers do NestJS

Modules

Um módulo é uma classe que faz uso de um decorator @Module(). O decorator @Module() fornece metadados, que o Nest usa para organizar a estrutura da aplicação.
Imagem mostrando os modules do NestJS

Middlewares

O middleware é uma função que é chamada antes do manipulador de rota. As funções de middleware têm acesso aos objetos de solicitação e resposta, e a próxima função de middleware no ciclo de solicitação-resposta do aplicativo. A próxima função de middleware é geralmente denotada por uma variável denominada next.

Imagem mostrando os middlewares do NestJS

Exception filters

A camada de exceções interna é responsável por manipular todas as exceções lançadas em todo o seu aplicativo. Quando uma exceção não tratada é detectada, o usuário final receberá uma resposta adequada.

Imagem mostrando os filters do NestJS

Pipes

Um pipe é uma classe anotada com o decorator @Injectable(). O pipe deve implementar a interface PipeTransform.

Imagem mostrando os pipes do NestJS

Guards

Um guarda é uma classe anotada com o decorator @Injectable(). O guarda deve implementar a interface do CanActivate.

Imagem mostrando os guards do NestJS

Interceptors

Um interceptor é uma classe anotada com o decorator @Injectable(). O interceptor deve implementar a interface NestInterceptor.

Imagem mostrando os interceptors do NestJS

Conclusão

[wp_ad_camp_1]

O NestJS é uma ótima alternativa de manter seu projeto organizado e escalável. Além de todos os seus recursos conforme apresentado acima ele também oferece suporte a diversos tipos de implementações não citadas como WebSockets, GraphQL e por ai vai.

Vamos lá, não vamos perder tempo! Entre agora na documentação oficial do Nest e deixe sua imaginação trabalhar.

+ posts sobre NodeJS

Comments

    1. Post
      Author

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *