Semelhanças entre os framworks NestJS e Angular

Com essa combinação, é possível construir aplicações completas, tanto no back-end quanto no front-end, utilizando a mesma arquitetura, linguagem e testes.

Nomeclatura dos arquivos

A nomenclatura dos arquivos segue o mesmo padrão: nome.função.extensão. No NestJS, um controller seria cat.controller.ts, enquanto no Angular, um componente seria cat.component.ts. Alguns arquivos até compartilham o mesmo nome, como módulos e serviços. Por exemplo: app.module.ts e cat.service.ts.

main.js

O arquivo de inicialização de ambos possue o mesmo nome, diretório e função. O arquivo src/main.js realiza o bootstrap e inicia o AppModule.

NestJS

async function bootstrap() {
  const app = await NestFactory.create(AppModule);
  await app.listen(3000);
}
bootstrap();

Angular

platformBrowserDynamic()
  .bootstrapModule(AppModule)
  .catch((err) => console.error(err));

Modulorização

No arquivo src/main.js, o AppModule é passado como parâmetro para o bootstrap. Tanto no NestJS quanto no Angular o AppModule representa o módulo principal da aplicação.

@Module({
  imports: [BrowserModule, FormsModule],
  controllers: [CatsController],
  providers: [CatsService],
})
export class CatsModule {}

NestJS - O módulo é exportado como uma classe decorada com @Module() que recebe um objeto de configuração."

@NgModule({
  declarations: [CatsComponent],
  imports: [FormsModule],
  providers: [CatsService],
  bootstrap: [AppComponent],
})
export class CatsModule {}

Angular - A única diferença é o nome do decorador @NgModule().

import, export, providers são idênticos.

Serviços

Ao criar um serviço tanto no aplicativo no NestJS quanto no Angular é utilizado o decorator @Injectable().

NestJS / Angular

@Injectable()
class HeroService {}
  • Injeção de dependencia também é idêntica. Tudo é classe e as dependência são passadas via constructor,
@Component({ … })
class HeroListComponent {
  constructor(private service: HeroService) {}
}

CLI

Ambos possuem CLI que geram códigos prontos já com módulos configurados. exemplo:

ng generate component product-details

gerar um componente no angular

nest generate service product

gerar um service no NestJS

nest generate resource product

Gerar uma pasta com um módulo contendo um CRUD básico: controller, service e teste

Essas são algumas das semelhanças entre Angular e NestJS.

Posts