Como melhorar o desempenho do Angular

Feb 21 2023
Angular é um framework front-end popular para a construção de aplicações web. No entanto, à medida que seu aplicativo cresce em tamanho e complexidade, você pode notar uma diminuição no desempenho.

Angular é um framework front-end popular para a construção de aplicações web. No entanto, à medida que seu aplicativo cresce em tamanho e complexidade, você pode notar uma diminuição no desempenho. Neste artigo, discutiremos algumas das melhores práticas para melhorar o desempenho do seu aplicativo Angular.

Use a estratégia de detecção de alterações OnPush

Angular usa a detecção de alterações para determinar quando atualizar a exibição. A estratégia de detecção de alteração padrão verifica alterações em todos os componentes sempre que ocorre um evento. Isso pode ser um processo demorado, especialmente para grandes aplicações.

Para melhorar o desempenho, você pode usar a estratégia de detecção de alterações OnPush. A estratégia “OnPush” acionará a detecção de alterações apenas se a referência a uma propriedade de entrada for alterada, não se as próprias propriedades do objeto forem alteradas. Isso significa que se você alterar um objeto que é passado como uma propriedade de entrada, a detecção de alterações não será acionada, mas se você atribuir um novo objeto à propriedade de entrada, a detecção de alterações será acionada.

Esse comportamento é diferente da estratégia de detecção de alteração padrão, que aciona a detecção de alteração em todas as alterações de propriedade de entrada, independentemente de a referência à propriedade de entrada ter sido alterada ou não.

Para usar a estratégia de detecção de alteração OnPush, adicione o seguinte código ao seu componente:

@Component({
 changeDetection: ChangeDetectionStrategy.OnPush
})

O carregamento lento é uma técnica que permite carregar apenas os componentes e módulos necessários sob demanda. Isso pode reduzir o tempo de carregamento inicial de seu aplicativo e melhorar seu desempenho.

Para usar o carregamento lento, você pode dividir seu aplicativo em módulos de recursos e carregá-los somente quando forem necessários. Por exemplo, se seu aplicativo tiver uma página de perfil de usuário, você poderá criar um módulo separado para ele e carregá-lo somente quando o usuário navegar para essa página.

Otimize a inicialização do componente

A inicialização do componente pode ser um processo demorado, especialmente se você tiver um grande número de dependências ou se executar cálculos desnecessários durante a inicialização.

Para otimizar a inicialização do componente, você pode minimizar o número de dependências e evitar cálculos desnecessários durante a inicialização. Você também pode usar o carregamento lento para carregar dependências somente quando elas forem necessárias.

Use trackBy em ngFor

Se você estiver usando ngFor para percorrer uma lista de itens, use trackBy para ajudar o Angular a rastrear quais itens foram adicionados, removidos ou modificados. Isso pode melhorar o desempenho de seu aplicativo reduzindo o número de manipulações de DOM.

Para usar trackBy, adicione o seguinte código ao seu componente:

<ng-container *ngFor="let item of items; trackBy: trackByFn">
  {{ item }}
</ng-container>

...

trackByFn(index, item) {
  return item.id;
}

Use tubos puros

Pipes são usados ​​para transformar dados em Angular. Por padrão, os pipes são puros, mas você pode ter pipes impuros, o que significa que eles são chamados toda vez que há uma alteração nos dados. Isso pode ser um problema de desempenho se o canal não precisar ser recalculado com frequência.

Para melhorar o desempenho, você pode tornar seu cachimbo puro. Um tubo puro é otimizado para recalcular somente quando o valor de entrada muda. Para tornar seu pipe puro, adicione o seguinte código ao seu pipe:

@Pipe({
  name: 'myPipe',
  pure: true
})

Seguindo essas melhores práticas, você pode melhorar significativamente o desempenho de seu aplicativo Angular e oferecer uma melhor experiência de usuário para seus usuários.

Leia também:https://zmushegh./why-use-pipe-instead-of-function-in-angular-507cf972bfb0

Atenciosamente,
Mushegh Zakaryan