¿Qué es el Change Detection?
Clase 16 de 23 • Curso de Rendimiento en Angular
Resumen
¿Cómo optimizar Angular más allá de las prácticas comunes?
En el mundo del desarrollo web con Angular, siempre buscamos maneras de optimizar nuestras aplicaciones asegurando que sean eficientes y rápidas. Una vez que tu aplicación ya está en funcionamiento, ¿hay más optimizaciones que se puedan implementar? La respuesta es sí. En Angular, una de las claves para optimizar es adecuar la detección de cambios, también conocida como Change Detection. Aquí exploraremos cómo aplicar prácticas que mejorarán el rendimiento de tu aplicación.
¿Cómo estructurar tu proyecto en Angular?
Al iniciar un proyecto, una buena elección es crear un nombre único para cada componente y evitar duplicidades, como tener un componente y un módulo con el mismo nombre. En nuestro caso, vamos a trabajar en una página de contacto, asegurándonos de seguir un plan claro:
- Eliminar componentes innecesarios y limpiar referencias en el routing.
- Crear nuevos componentes según los requerimientos del ejercicio.
- Organizar los componentes en directorios adecuados para facilitar su gestión.
Por ejemplo, podemos empezar creando un componente llamado contact-home
para funcionar como base y otro llamado contact-list
para desplegar la información deseada.
ng generate component contact-home
ng generate component contact-list
¿Cómo generar datos de prueba con un servicio en Angular?
La generación de datos sintéticos es esencial para probar el rendimiento y la optimización de detección de cambios. Aquí crearemos un servicio para generar datos aleatorios:
- Crea un servicio que genere datos aleatorios.
- Incluye datos como nombres y números dentro de un rango definido.
- Implementa una interfaz para estructurar los datos que deseas manipular.
El servicio se construye y organiza dentro del directorio core/services
, y podría verse así:
// servicio para generar datos aleatorios
import { Injectable } from '@angular/core';
import { of } from 'rxjs';
import { map } from 'rxjs/operators';
@Injectable({
providedIn: 'root'
})
export class DataService {
generateRandomData(count: number, min: number, max: number) {
let data = [];
for (let i = 0; i < count; i++) {
const name = `Name${Math.floor(Math.random() * 1000)}`;
const number = Math.floor(Math.random() * (max - min + 1)) + min;
data.push({ name, number });
}
return of(data);
}
}
Además, definimos una interfaz para estructurar los datos generados:
export interface EmployeeInfo {
name: string;
number: number;
}
¿Cómo implementar la lógica del componente de lista?
La optimización también pasa por la correcta implementación de los componentes. Vamos a centrarnos en estructurar un componente que muestre una lista de datos generados:
- En el componente
contact-list
, agrega un título y campos de entrada. - Utiliza un
input
para recibir parámetros que definan la estructura y los datos a mostrar. - Configura la lógica del componente para manejar datos y cambios.
El componente se configura de la siguiente manera:
import { Component, Input, OnInit } from '@angular/core';
@Component({
selector: 'app-contact-list',
template: `
<h2>{{ title }}</h2>
<ul>
<li *ngFor="let item of data">{{ item.name }} - {{ item.number }}</li>
</ul>
`,
styleUrls: ['./contact-list.component.css']
})
export class ContactListComponent implements OnInit {
@Input() title: string;
@Input() data: EmployeeInfo[];
ngOnInit() {
// Aquí podrías utilizar el servicio para generar datos
}
}
Al seguir estos pasos y estructurar correctamente tus componentes y servicios, estarás posicionando tu aplicación Angular para ser más eficiente y veloz. Siempre recuerda que el camino hacia la optimización comienza con una buena organización y simplificación del código. ¡Adelante, sigue explorando y aplicando estas técnicas para mejorar tu desarrollo en Angular!