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