Middle
¿Cómo funciona Angular?
sobes.tech AI
Respuesta de la IA
Angular funciona como un marco para crear aplicaciones de una sola página (SPA). Sus componentes clave y principios:
- Modularidad: Las aplicaciones se construyen a partir de módulos.
@NgModuledefine qué componentes, servicios y otros elementos pertenecen al módulo. - Componentes: Los bloques de construcción principales de las aplicaciones Angular. Cada componente consta de una plantilla (HTML), una clase TypeScript (lógica) y estilos (CSS). El decorador
Componentlos vincula. - Vinculación de datos (Data Binding): Angular proporciona la conexión entre los datos en la clase del componente y la vista en la plantilla. Existen vinculaciones unidireccionales (propiedad, interpolación) y bidireccionales (ngModel).
- Directivas: Modifican el comportamiento o la apariencia de los elementos del DOM. Pueden ser estructurales (
*ngIf,*ngFor) o atributivas (ngClass,ngStyle). - Servicios: Clases que contienen lógica que puede ser utilizada por varios componentes. Se usan para obtener datos, lógica de negocio, etc.
- Inyección de dependencias (Dependency Injection): Mecanismo mediante el cual Angular proporciona servicios a componentes u otros servicios. Permite que el código sea más flexible y testeable.
- Enrutamiento (Routing): Permite navegar entre diferentes vistas (componentes) de la aplicación sin recargar la página. Se define mediante
RouterModuley la configuración de rutas. - Ciclo de vida del componente (Component Lifecycle): Serie de eventos que ocurren desde la creación hasta la destrucción del componente. Angular proporciona ganchos (métodos) que se pueden implementar para realizar acciones en etapas específicas (por ejemplo,
ngOnInit,ngOnDestroy). - Detección de cambios (Change Detection): Mecanismo que determina cuándo actualizar la vista (DOM) en función de cambios en los datos de la aplicación. Angular usa zonas (
NgZone) para rastrear eventos asíncronos y lanzar automáticamente la detección de cambios. - Plantillas (Templates): HTML con extensiones de Angular para vinculación de datos, directivas y expresiones.
- RxJS: Angular usa activamente la biblioteca RxJS para trabajar con datos asíncronos y flujos de eventos.
Proceso de trabajo a alto nivel:
- Carga: El navegador carga
index.html. - Inicio: Se inicia la raíz de la aplicación, generalmente en
main.ts. - Arranque:
@NgModulepara el módulo raíz (generalmenteAppModule) se carga conplatform-browser. - Renderizado: Angular crea y renderiza los componentes, comenzando desde el raíz.
- Vinculación de datos: Los datos de las clases de componentes se vinculan con las plantillas.
- Detección de cambios: Angular monitorea los cambios en los datos y actualiza la vista.
- Enrutamiento: Las transiciones entre vistas son manejadas por el enrutador.
// Ejemplo de un componente simple
import { Component } from '@angular/core';
@Component({
selector: 'app-greet', // Nombre de la etiqueta para usar en la plantilla
template: `<p>{{ message }}</p>`, // Plantilla del componente
styles: ['p { color: blue; }'] // Estilos del componente
})
export class GreetComponent {
// Lógica del componente
message = '¡Hola desde Angular!';
}
// Ejemplo de uso de un servicio con DI
import { Injectable } from '@angular/core';
@Injectable({
providedIn: 'root' // El servicio está disponible en el inyector raíz
})
export class DataService {
getData(): string {
return 'Datos del servicio';
}
}
// En un componente que usa el servicio
import { Component, OnInit } from '@angular/core';
import { DataService } from './data.service';
@Component({
selector: 'app-show-data',
template: `<p>{{ serviceData }}</p>`,
})
export class ShowDataComponent implements OnInit {
serviceData: string = '';
constructor(private dataService: DataService) { // Inyección del servicio
}
ngOnInit() {
this.serviceData = this.dataService.getData();
}
}
Angular compila TypeScript y plantillas HTML en JavaScript durante el proceso de construcción (compilación AOT por defecto), lo que mejora el rendimiento.