Referencia CLI
La Referencia CLI en Angular es una herramienta esencial que permite a los desarrolladores crear, mantener y optimizar aplicaciones de manera eficiente. CLI (Command Line Interface) facilita la automatización de tareas repetitivas como la generación de componentes, servicios, módulos y pipes, asegurando consistencia en la estructura del proyecto y acelerando el flujo de desarrollo.
El uso de la Referencia CLI es fundamental durante todo el ciclo de vida del desarrollo: desde la creación de un proyecto (ng new) y generación de componentes (ng generate component) hasta la construcción y despliegue de aplicaciones (ng build, ng deploy). CLI permite gestionar el estado de los componentes, aplicar patrones de flujo de datos y aprovechar el ciclo de vida de Angular, asegurando aplicaciones escalables y mantenibles.
El lector aprenderá cómo usar CLI para construir componentes reutilizables, manejar el estado de forma reactiva y optimizar la performance de la aplicación. En proyectos modernos de SPA, el conocimiento del CLI reduce errores comunes como prop drilling, renderizados innecesarios o mutaciones indebidas del estado, además de facilitar la integración con servicios y módulos compartidos.
Ejemplo Básico
typescript// Ejemplo básico de Angular usando CLI para crear un componente funcional
// Crear proyecto: ng new ejemplo-cli
// Generar componente: ng generate component contador
import { Component } from '@angular/core';
@Component({
selector: 'app-contador',
template: ` <h2>Contador Angular CLI</h2> <p>Valor actual: {{ contador }}</p> <button (click)="incrementar()">Incrementar</button> <button (click)="decrementar()">Decrementar</button>
`,
styles: [`h2 { color: #1976d2; } button { margin: 5px; }`]
})
export class ContadorComponent {
contador: number = 0;
incrementar() {
this.contador++;
}
decrementar() {
this.contador--;
}
}
// Añadir <app-contador></app-contador> en app.component.html
// Ejecutar: ng serve
El ejemplo anterior muestra cómo el CLI genera automáticamente el esqueleto de un componente, incluyendo archivos .ts, .<a href="/es/html/" class="smart-link">html</a> y .<a href="/es/css/" class="smart-link">css</a>. ContadorComponent maneja el estado interno con la propiedad contador y métodos incrementar y decrementar.
El enlace de eventos (click) ilustra el flujo unidireccional de datos de Angular. CLI también registra automáticamente el componente en app.module.ts, evitando errores de configuración manual.
En aplicaciones más complejas, se recomienda manejar el estado mediante servicios con BehaviorSubject, permitiendo que varios componentes reaccionen a cambios de datos. CLI facilita la integración de estos servicios, permitiendo a los desarrolladores concentrarse en la lógica de la aplicación y no en la configuración, evitando prop drilling y renderizados innecesarios.
Ejemplo Práctico
typescript// Ejemplo avanzado con servicio y ciclo de vida
import { Injectable } from '@angular/core';
import { BehaviorSubject } from 'rxjs';
@Injectable({ providedIn: 'root' })
export class ContadorService {
private valor = new BehaviorSubject<number>(0);
contador$ = this.valor.asObservable();
incrementar() {
this.valor.next(this.valor.value + 1);
}
decrementar() {
this.valor.next(this.valor.value - 1);
}
}
// Componente usando el servicio
import { Component, OnInit, OnDestroy } from '@angular/core';
import { Subscription } from 'rxjs';
import { ContadorService } from './contador.service';
@Component({
selector: 'app-contador-avanzado',
template: ` <h2>Contador Avanzado CLI</h2> <p>Valor actual: {{ valor }}</p> <button (click)="sumar()">+</button> <button (click)="restar()">-</button>
`
})
export class ContadorAvanzadoComponent implements OnInit, OnDestroy {
valor = 0;
sub!: Subscription;
constructor(private contadorService: ContadorService) {}
ngOnInit() {
this.sub = this.contadorService.contador$.subscribe(v => this.valor = v);
}
sumar() {
this.contadorService.incrementar();
}
restar() {
this.contadorService.decrementar();
}
ngOnDestroy() {
this.sub.unsubscribe();
}
}
Advanced Angular Implementation
typescript// Ejemplo avanzado para proyectos corporativos con SharedModule
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { ContadorAvanzadoComponent } from '../contador-avanzado/contador-avanzado.component';
@NgModule({
declarations: [ContadorAvanzadoComponent],
imports: [CommonModule],
exports: [ContadorAvanzadoComponent]
})
export class SharedModule {}
// Registro en AppModule
import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { AppComponent } from './app.component';
import { SharedModule } from './shared/shared.module';
@NgModule({
declarations: [AppComponent],
imports: [BrowserModule, SharedModule],
bootstrap: [AppComponent]
})
export class AppModule {}
Las mejores prácticas del CLI incluyen la creación de módulos compartidos (SharedModule) para componentes reutilizables, promoviendo la modularidad y evitando duplicación. CLI asegura la correcta importación y registro, minimizando errores.
Errores comunes a evitar incluyen modificar estado directamente, generar renderizados innecesarios o crear dependencias circulares. CLI ofrece comandos de lint y test (ng lint, ng test) para detectar problemas tempranamente.
Para optimizar performance, use ng build --prod con tree-shaking y minificación. CLI también permite auditorías de seguridad y actualización de dependencias con ng update. La depuración se realiza con ng serve --open y herramientas DevTools, monitoreando ciclo de vida y flujos de RxJS.
📊 Referencia Completa
| Angular Element/Method | Description | Syntax | Example | Notes |
|---|---|---|---|---|
| ng new | Crear nuevo proyecto | ng new app-name | ng new miApp | Incluye configuración inicial |
| ng generate component | Generar componente | ng g c name | ng g c dashboard | Crea estructura completa |
| ng generate service | Generar servicio | ng g s name | ng g s auth | Root scope por defecto |
| ng build | Construir proyecto | ng build [options] | ng build --prod | Optimizado para producción |
| ng serve | Iniciar servidor dev | ng serve [options] | ng serve --open | Desarrollo y pruebas |
| ng lint | Revisar código | ng lint | ng lint | ESLint |
| ng test | Ejecutar unit tests | ng test | ng test | Karma + Jasmine |
| ng e2e | End-to-End tests | ng e2e | ng e2e | Protractor |
| ng add | Agregar paquete | ng add package | ng add @angular/material | Configuración automática |
| ng update | Actualizar paquetes | ng update | ng update @angular/core | Mantener compatibilidad |
| ng deploy | Desplegar proyecto | ng deploy | ng deploy | Depende del adaptador |
| ng analytics | Telemetría | ng analytics off | ng analytics on | Privacidad |
| ng config | Configurar CLI | ng config key value | ng config cli.warnings.versionMismatch false | Parámetros del CLI |
| ng doc | Documentación | ng doc topic | ng doc router | Acceso rápido |
| ng version | Versiones Angular | ng version | ng v | Diagnóstico |
| ng extract-i18n | Exportar mensajes i18n | ng extract-i18n | ng xi18n | Internacionalización |
| ng generate module | Generar módulo | ng g m name | ng g m shared | Estructura modular |
| ng cache clean | Limpiar cache | ng cache clean | ng cache clean | Mejora compilación |
| ng generate pipe | Generar pipe | ng g p name | ng g p capitalize | Transformación de datos |
| ng completion | Autocompletado CLI | ng completion | ng completion | Facilita desarrollo |
📊 Complete Angular Properties Reference
| Property | Values | Default | Description | Angular Support |
|---|---|---|---|---|
| strict | true/false | true | Modo estricto de compilación | v12+ |
| inlineStyle | true/false | false | CSS inline en componente | v10+ |
| inlineTemplate | true/false | false | Template inline | v10+ |
| skipTests | true/false | false | Omitir generación de tests | v8+ |
| routing | true/false | false | Agregar módulo de rutas | v9+ |
| style | css/scss/sass | css | Selección de preprocesador | v8+ |
| prefix | string | app | Prefijo selector | v8+ |
| skipInstall | true/false | false | Omitir instalación dependencias | v8+ |
| packageManager | npm/yarn/pnpm | npm | Gestor de paquetes | v11+ |
| strictTemplates | true/false | true | Validación estricta templates | v13+ |
| minimal | true/false | false | Estructura mínima proyecto | v14+ |
| standalone | true/false | false | Componente standalone | v15+ |
Resumen y siguientes pasos
La Referencia CLI es fundamental para desarrolladores Angular, automatizando y estandarizando la creación de componentes, módulos y servicios.
Permite entender arquitectura de componentes, manejo de estado, flujo de datos, optimización de performance y seguridad.
Se recomienda continuar con Lazy Loading, Standalone Components y gestión de estado avanzada (NgRx). CLI aplicado en proyectos reales refuerza estos conocimientos. Se sugiere usar documentación oficial y Angular DevTools para prácticas avanzadas.
🧠 Pon a Prueba tu Conocimiento
Pon a Prueba tu Conocimiento
Ponte a prueba con este cuestionario interactivo y descubre qué tan bien entiendes el tema
📝 Instrucciones
- Lee cada pregunta cuidadosamente
- Selecciona la mejor respuesta para cada pregunta
- Puedes repetir el quiz tantas veces como quieras
- Tu progreso se mostrará en la parte superior