Article image
Caio Sebastião
Caio Sebastião01/09/2023 09:56
Compartilhe

Melhores práticas em Angular - 5 Dicas importantes

  • #TypeScript
  • #Angular

Sobre o framework

Desde que comecei a estudar Angular, senti uma vontade renovada de me aprofundar no mundo do front-end. Apesar de ter uma curva de aprendizado um pouco mais acentuada em comparação à outras ferramentas como React e Vue, o Angular é extremamente completo e se torna relativamente simples quando se acostuma com sua organização e estrutura de arquivos.

Neste artigo, vamos abordar cinco pontos importantes que podem te ajudar a entender melhor e adicionar performance para esse framework incrível.

 1 - Disposição de módulos

Quando definir seus provedores e serviços de seus componentes, é uma boa idéia separá-los em módulos principais chamados Core Module e Shared Module, desta forma você organiza de maneira eficiente os serviços, diretivas e pipes que serão utilizados de forma exclusiva em certos componentes e outros que são compartilhados entre várias partes do seu código. A organização de pastas pode, mas não necessariamente deve, ser a seguinte:

Core Module: app/core/core.module.ts

Shared Module: app/shared/shared.module.ts 

Você pode ainda criar outros módulos específicos para outras finalidades, como Config Module, Home Module, etc. Use mais dessa funcionalidade que deixa o seu projeto extremamente organizado e conciso.

 2 - Cuidado com os Observables

Os Observables são muito importantes para tratar dados de forma assíncrona em nossa aplicação, e o fazem de maneira muito eficiente. Porém, criar subscribes sem um controle eficaz pode gerar o chamado "Memory Leak".

Para evitar isso, podemos usar o pipe "async", dessa forma a inscrição do Observable é destruida juntamente com o componente, exemplo:

<ul>
 <li *ngFor="let time of times | async">{{ time.name }}</li>
</ul>

 3 - Utilize o Index.ts

O arquivo index.ts acaba sendo esquecido quando construímos aplicações menores, mas não subestime sua utilidade, ele pode reduzir a quantidade de imports de módulos no seu Core Module. Exemplo:

times/index.ts:
 export * from './time.ts';  // exporta o meu Model
 export * from './time.service.ts'; // exporta o meu serviço
 export { TimeComponent } from './time.component.ts'; // exporta o arquivo logico do meu componente

 import { Time, TimeService, TimeComponent } from '../times';

4 - Crie seus pipes

Utilizar pipes é uma maneira bem eficiente de tratar dados em nossos componentes, mas poucos têm o costume de criar seus próprios pipes, e isso pode ajudar a melhorar a performance de sua aplicação quando você os utiliza no lugar de métodos, por exemplo: precisamos criar uma forma de adicionar um pronome de tratamento antes do nome de uma pessoa. 

Normalmente criaríamos um método no arquivo .ts do nosso componente para tratar a string do nome inserido, mas temos outra forma de fazer isso criando um pipe chamado "Tratamento", por exemplo. Ele identifica o gênero pelas strings "M" ou "F", e adiciona o pronome. O código seria mais ou menos assim:

import { Pipe, PipeTransform } from '@angular/core';

@Pipe({
 name: 'tratamento',
})

export class TratamentoPipe implements PipeTransform {
 transform(value: string): any {
if (value === 'M') {
 return 'Sr.';
} else {
 return 'Sra.';
}
 }
}

5 - Parâmetro trackBy

Quando usamos a diretiva *ngFor para listar algo, ele irá renderizar novamente todos os elementos em nossa lista em qualquer mudança que seja feita à ela. Isso diminui a performance e para evitar isso podemos usar o parâmetro 'trackBy', que por padrão compara os elementos da lista por identidade, como ID e nome, e renderiza apenas os elementos diferentes. Exemplo de utilização:

*ngFor="let time of times; trackBy: trackByFn"

A função pode ser alterada para atender à nossa demanda e as características de nossos elementos.

Compartilhe
Comentários (1)

PR

Paulo Rodrigues - 01/09/2023 11:15

Esse artigo tá muito bom, comecei a trabalhar com Angular recentemente e desconhecia algumas dicas, obrigado por agregar a comunidade, Caio!