Skip to content

GitLab

  • Menu
Projects Groups Snippets
    • Loading...
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in / Register
  • A angular
  • Project information
    • Project information
    • Activity
    • Labels
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 0
    • Issues 0
    • List
    • Boards
    • Service Desk
    • Milestones
  • Merge requests 0
    • Merge requests 0
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Deployments
    • Deployments
    • Environments
    • Releases
  • Monitor
    • Monitor
    • Metrics
    • Incidents
  • Packages & Registries
    • Packages & Registries
    • Package Registry
    • Infrastructure Registry
  • Analytics
    • Analytics
    • CI/CD
    • Repository
    • Value stream
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • imunnic
  • angular
  • Wiki
  • Modulo 1.2

Modulo 1.2 · Changes

Page history
born authored Dec 22, 2025 by imunnic's avatar imunnic
Hide whitespace changes
Inline Side-by-side
Showing with 312 additions and 0 deletions
+312 -0
  • Modulo-1.2.md Modulo-1.2.md +312 -0
  • No files found.
Modulo-1.2.md 0 → 100644
View page @ 6ca55ed1
# Sesión 2 – Estructura de un proyecto Angular (arquitectura moderna)
## 1. Organización general de un proyecto Angular
Un proyecto Angular moderno adopta una arquitectura **standalone-first**, en la que la aplicación se construye a partir de componentes independientes y una configuración global basada en providers. La estructura del proyecto busca separar responsabilidades de forma clara, facilitando la escalabilidad y el mantenimiento.
Estructura general del proyecto:
```text
primer-proyecto-angular/
├── src/
├── angular.json
├── tsconfig.json
├── package.json
```
La carpeta `src` concentra todo el código relacionado con la aplicación.
---
## 2. Carpeta `src` como núcleo de la aplicación
```text
src/
├── app/
├── assets/
├── environments/
├── index.html
├── main.ts
├── styles.css
```
Dentro de `src/app` se define la arquitectura interna de la aplicación.
---
## 3. Carpeta `app` y estructura interna recomendada
En Angular moderno no existe una estructura única obligatoria, pero es habitual organizar la aplicación por **responsabilidad técnica y funcional**. Una estructura base habitual es la siguiente:
```text
app/
├── componentes/
├── vistas/
├── servicios/
├── interceptores/
├── pipes/
├── utils/
├── models/
├── app.component.ts
├── app.config.ts
```
La carpeta `models` se añade para centralizar todas las **interfaces y tipos de datos** que representan el modelo de la aplicación. Esta organización permite escalar la aplicación sin generar acoplamientos innecesarios.
---
## 4. Carpeta `componentes`
La carpeta `componentes` contiene **componentes reutilizables**, normalmente independientes del contexto de navegación.
Características habituales de estos componentes:
* No representan páginas completas
* Se reutilizan en distintas vistas
* Encapsulan una parte concreta de la interfaz
Ejemplos de componentes típicos:
* Botones personalizados
* Cabeceras
* Modales
* Tarjetas
* Formularios reutilizables
Ejemplo de estructura:
```text
componentes/
├── boton-primario/
│ ├── boton-primario.component.ts
│ ├── boton-primario.component.html
│ └── boton-primario.component.css
```
Estos componentes suelen declararse como `standalone`.
---
## 5. Carpeta `vistas`
La carpeta `vistas` agrupa los **componentes que representan páginas completas** de la aplicación y que normalmente están asociadas a rutas.
Características principales:
* Representan pantallas o secciones completas
* Orquestan componentes reutilizables
* Se vinculan al sistema de enrutado
Ejemplo de estructura:
```text
vistas/
├── home/
│ ├── home.component.ts
│ ├── home.component.html
│ └── home.component.css
```
Una vista suele actuar como punto de composición de varios componentes.
---
## 6. Carpeta `servicios`
La carpeta `servicios` contiene clases responsables de encapsular la **lógica de negocio** y la comunicación con fuentes externas.
Responsabilidades habituales de los servicios:
* Acceso a APIs
* Gestión de estado compartido
* Lógica reutilizable no relacionada con la vista
Ejemplo:
```text
servicios/
├── usuarios.service.ts
├── productos.service.ts
```
Los servicios se inyectan mediante el sistema de **inyección de dependencias** y se registran mediante providers.
---
## 7. Carpeta `interceptores`
La carpeta `interceptores` contiene interceptores HTTP que permiten interceptar y modificar las peticiones y respuestas HTTP de forma global.
Usos habituales de interceptores:
* Añadir cabeceras de autenticación
* Manejar errores globales
* Registrar logs
* Transformar respuestas
Ejemplo de estructura:
```text
interceptores/
├── auth.interceptor.ts
```
Los interceptores se registran como providers globales en `app.config.ts`.
---
## 8. Carpeta `pipes`
La carpeta `pipes` agrupa **pipes personalizados**, utilizados para transformar datos en las plantillas.
Características:
* Se usan exclusivamente en la vista
* Transforman valores sin modificar el estado
* Son reutilizables
Ejemplo:
```text
pipes/
├── capitalize.pipe.ts
```
Los pipes suelen declararse como standalone y se importan directamente en los componentes que los utilizan.
---
## 9. Carpeta `utils`
La carpeta `utils` contiene **funciones auxiliares y utilidades genéricas** que no dependen de Angular.
Características:
* No utilizan inyección de dependencias
* No conocen el framework
* Son reutilizables en cualquier contexto
Ejemplos típicos:
* Funciones de formateo
* Validaciones genéricas
* Helpers matemáticos o de fechas
Ejemplo:
```text
utils/
├── date-utils.ts
├── string-utils.ts
```
---
## 10. Carpeta `models`
La carpeta `models` contiene **interfaces y tipos de datos** que representan el modelo de la aplicación.
Características:
* Centraliza la definición de datos
* Facilita la tipificación en servicios y componentes
* Mejora la mantenibilidad y coherencia del código
Ejemplo:
```text
models/
├── usuario.model.ts
├── producto.model.ts
```
---
## 11. Recursos estáticos: carpeta `assets`
La carpeta `assets` almacena recursos estáticos como imágenes, iconos o archivos JSON.
```html
<img src="assets/logo.png" alt="Logo">
```
Estos recursos se sirven directamente sin pasar por el compilador de Angular.
---
## 12. Configuración por entorno: carpeta `environments`
La carpeta `environments` permite definir configuraciones específicas por entorno de ejecución.
```ts
export const environment = {
production: false,
apiUrl: 'http://localhost:3000'
};
```
Estas configuraciones se utilizan habitualmente desde servicios o providers.
---
## 13. Flujo de arranque de una aplicación Angular moderna
El flujo de arranque sigue una secuencia clara:
1. El navegador carga `index.html`
2. Se ejecuta `main.ts`
3. Se aplica la configuración global definida en `app.config.ts`
4. Se renderiza el componente raíz
---
## 14. `main.ts` y `app.config.ts`
Archivo `main.ts`:
```ts
import { bootstrapApplication } from '@angular/platform-browser';
import { AppComponent } from './app/app.component';
import { appConfig } from './app/app.config';
bootstrapApplication(AppComponent, appConfig);
```
Archivo `app.config.ts`:
```ts
import { ApplicationConfig } from '@angular/core';
import { provideRouter } from '@angular/router';
export const appConfig: ApplicationConfig = {
providers: [
provideRouter([])
]
};
```
Este enfoque sustituye completamente al uso de módulos y centraliza la configuración mediante providers.
---
## 15. Componente raíz como componente standalone
El componente raíz se define como componente standalone y actúa como contenedor principal de la aplicación.
```ts
import { Component } from '@angular/core';
@Component({
selector: 'app-root',
standalone: true,
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent {
title = 'Primer proyecto Angular';
}
```
Este componente es el primer elemento renderizado dentro de `index.html`.
---
\ No newline at end of file
Clone repository

Índice

  • Inicio
  • Módulo 1. Fundamentos y arranque del proyecto
    • Módulo 1.1 Angular
    • Módulo 1.2 Estructura
    • Módulo 1.2 Arquitectura y conceptos base
  • Módulo 2. Componentes y reutilización
  • Módulo 3. Navegación y estructura de aplicación
  • Módulo 4. Servicios y comunicación con backend
  • Módulo 5. Gestión de estado (Stores)
  • Módulo 6. Calidad, optimización y cierre