ES

Elto Silva25/09/2023 13:00
Compartilhe

Entendo o @NgModule do Angular

  • #JavaScript
  • #Angular

Uma das principais dificuldades para quem está começando a aprender Angular, é compreender o conceito de módulo do Angular o uso do @NgModule. Nesse artigo tentarei explica-lo de uma forma que os desenvolvedores JavaScript, possa entende-lo de mais fácil.

No site do Angular, temos a seguinte explicação do que é um módulo Angular:

NgModules são contêineres para um bloco coeso de código dedicado a um domínio de aplicativo, um fluxo de trabalho ou um conjunto de recursos intimamente relacionado. Eles podem conter componentes, provedores de serviços e outros arquivos de código cujo escopo é definido pelo NgModule que os contém. Eles podem importar funcionalidades exportadas de outros NgModules e exportar funcionalidades selecionadas para uso por outros NgModules.

Essa explicação pode ser um pouco confusa para quem está tendo o seu primeiro contato com o framework.

No JavaScript temos os módulos, que são arquivos JavaScript que compartilham informações (se ainda não sabe o que são módulo JavaScript, clique aqui), e os módulos do Angular são uma abstração desses módulos, de forma a possibilitar que o compilador Angular consiga construir e renderizar a sua aplicação. Veja as semelhanças:

// app.module.ts

@NgModule({
 imports:   [ BrowserModule ],
 providers:  [ Logger ],
 declarations: [ AppComponent ],
 exports:   [ AppComponent ],
})
export class AppModule { }
// app.js

/* imports: [ BrowserModule ] */
import { BrowserModule } from '@angular/platform-browser';


/*
providers:    [ Logger ],
declarations: [ AppComponent ]
*/
class Logger {}
class AppComponent {}


/*exports: [ AppComponent ]*/
export { AppComponent }

Como pode ser observado no exemplo acima os dois são bem parecidos. Assim como nos módulos JavaScript você consegue separar e organizar o código de sua aplicação de uma maneira mais coesa, ainda mais se utilizar o Barrel Pattern. Com os módulos Angular você separa e organiza o seu código tornando o mais fácil de manter.

Mas pode sugir a seguinte pergunta, o que são providers e declarations?

  • Providers: são classes/funções que adicionam regras de negócios ou funcionalidades auxiliares à aplicação, mas que não adicionam elementos no DOM e nem interagem com ele. Os elementos de providers são utilizados pelo compilador Angular, na injeção de dependência;
  • Declarations: são classes/funções que adicionam elementos no DOM e/ou interagem com ele. Os elementos de declarations utilizados diretamente nos templates da aplicação (arquivos html) como elementos ou atributos, e o compilador do Angular os utilizam para renderizar a página.

Em outro artigo falarei um pouco mais sobre os elementos do Angular. Espero ter ajudado você em seu aprendizado do Angular.

Compartilhe
Comentários (1)

DC

Deividson Coelho - 25/09/2023 15:51

Massa, muito boa a explicação.