Angular es un framework opinado: decide la arquitectura por ti y, a cambio, ofrece previsibilidad. Si vienes de React, donde cada proyecto inventa su propia estructura, el choque inicial es precisamente ese: aquí existe «la forma Angular» de hacer las cosas.
Angular en una frase
Angular es un framework front-end completo, mantenido por Google y escrito en TypeScript. «Completo» es la palabra clave: el enrutamiento, los formularios, el cliente HTTP y la inyección de dependencias ya vienen incluidos, son oficiales y están integrados.
Esto cambia el costo de las decisiones. En lugar de elegir y ensamblar cinco bibliotecas, aprendes una vez la forma Angular y la repites. Menos libertad, menos debates interminables sobre detalles.
Componentes y templates: el bloque básico
La unidad de todo es el componente: una clase de TypeScript decorada con @Component, vinculada a un template HTML. La clase contiene el estado y la lógica; el template dibuja la pantalla y reacciona a ese estado.
El template tiene su propia sintaxis. {{ titulo }} interpola un valor, [src]="url" enlaza una propiedad y (click)="salvar()" escucha un evento. En las versiones actuales, el control de flujo se convirtió en bloques propiamente dichos: @if, @for y @switch, en lugar de las antiguas directivas *ngIf y *ngFor.
Los componentes se componen entre sí: uno usa a otro mediante su etiqueta, los datos bajan a través de input y los eventos suben mediante output. Si ya has pensado en componentes en React o Vue, el modelo mental es el mismo; solo cambia el dialecto.
Módulos y el mundo standalone
Durante años, todo componente debía declararse dentro de un NgModule, una caja que agrupaba componentes, servicios e imports. Funcionaba, pero implicaba burocracia: muchos archivos *.module.ts solo para registrar cosas.
Desde Angular 14+, el estándar pasó a ser el componente standalone: declara sus propios imports y prescinde de NgModule. Hay menos ceremonia, un árbol de dependencias más claro y es el camino recomendado para proyectos nuevos.
Aún encontrarás NgModule en código heredado y tutoriales antiguos, así que conviene reconocer ambos enfoques. Pero si empiezas hoy, empieza con standalone y no mires atrás.
Servicios e inyección de dependencias
El template dibuja, el componente coordina y la lógica que no pertenece a la pantalla vive en servicios. Las llamadas a la API, las reglas de negocio y la caché: todo eso se convierte en una clase de servicio, comprobable y reutilizable fuera de cualquier componente.
El punto clave es la inyección de dependencias, el corazón de Angular. No creas el servicio con new; declaras que lo necesitas en el constructor (o mediante inject()) y el framework entrega una instancia lista para usar. Un servicio marcado con @Injectable({ providedIn: 'root' }) se convierte en un singleton compartido por toda la aplicación.
En la práctica, esto mantiene el código desacoplado y facilita las pruebas: al probar, inyectas un doble en lugar del servicio real y listo. Es el tipo de estructura que parece exagerada en una aplicación pequeña y te salva en una grande.
La CLI hace el trabajo aburrido
Angular CLI es la mejor carta de presentación del framework. ng new crea un proyecto configurado, con TypeScript, pruebas y build ya resueltos; no tienes que configurar Webpack a mano.
En el día a día, ng generate component perfil crea un componente con sus archivos y el código repetitivo en el lugar correcto, ng serve inicia el servidor de desarrollo con recarga en caliente y ng build genera el bundle de producción optimizado. La CLI sigue las convenciones del framework, así que todo el proyecto nace con la misma estructura.
Esa estandarización explica buena parte del atractivo de Angular: menos decisiones manuales y menos diferencias entre las personas del equipo.
Cuándo tiene sentido Angular (y cuándo no)
Angular brilla en el escenario para el que fue creado: una aplicación grande, de larga duración y desarrollada por un equipo también grande. Sus opiniones firmes se convierten en una ventaja cuando diez personas necesitan ponerse de acuerdo sobre la estructura: el framework ya lo hizo por ellas. Por eso domina el mundo corporativo.
Para una landing page, un sitio de contenidos o un prototipo rápido, toda esa infraestructura puede ser un peso muerto. En esos casos, React, Vue, Svelte o incluso HTML con un poco de JavaScript permiten entregar más rápido y con menos carga conceptual.
La pregunta honesta no es «¿cuál es el mejor framework?», sino «¿el tamaño y la vida útil del proyecto justifican la estructura de Angular?». Si la respuesta es sí, pocas herramientas escalan tan bien. Si no, estarás llevando un camión para comprar pan, y no será culpa del camión.

