Configuración de Ambientes en Angular: Desarrollo y Producción
Clase 5 de 36 • Curso de Angular Avanzado
Contenido del curso
- 7

Buenas prácticas con variables locales en Angular
09:14 - 8

Optimización de Imágenes en Angular con NG Optimizate Image
17:08 - 9

Optimización de Rutas Amigables para SEO en Angular
11:27 - 10

"Reactividad en Angular: Migración a Input Signals"
20:42 - 11

Migración de Inputs a Signals en Angular: Mejora de Rendimiento y Flujo
12:24 - 12

Migración de Outputs en Angular: De Decoradores a Funciones
07:35 - 13

Primitivas reactivas de Angular: Uso de Linked Signal y Computed
12:56 - 14

Sincronización de Componentes en Angular con Model y Signals
12:03 - 15

Interoperabilidad de RXJS y Signals en Angular
11:18 - 16

Conversión de Observables a Signals en Angular con toSignal
08:07 - 17

Interoperabilidad de RXDS y Signals en Angular: Uso de RX Resourcers
11:10 - 18

Manejo de Parámetros Reactivos con RX Resource en Angular
09:18 - 19

Manejo de Promesas y Fetch en Angular sin RXJS
07:59 - 20

Reactividad en Angular: Uso de Signals para Consultas DOM
09:00 - 21

Configuración de Prettier para HTML en Angular
05:28 quiz de Nuevas Funcionalidades en Angular
- 22

Server Side Rendering en Angular: Builders y Migración
10:17 - 23

Server Side Rendering con Angular: Mejora Rendimiento y SEO
13:26 - 24

Manejo de APIs del Navegador con Angular: Uso de AfterNextRender
09:43 - 25

Geolocalización y APIs: Creando un Mapa de Tiendas Cercanas
15:39 - 26

Habilitar Pre-rendering en Angular para Generación de Sitios Estáticos
11:26 - 27

Despliegue de Aplicaciones Node.js con App Fiber Hosting
18:12 quiz de Server-Side Rendering (SSR) y Navegación
- 28

Generación de Meta Tags Dinámicos con Angular y Open Graph
15:11 - 29

Creación de MetaTags Dinámicos en Angular
12:51 - 30

Proceso de Hydration y Event Replay en Angular
05:54 - 31

Implementación de Productos Relacionados en Angular eCommerce
09:26 - 32

Carga diferida de componentes en Angular para mejorar rendimiento
10:10 - 33

Optimización de Incremental Hydration en Angular
06:14 - 34

Configuración de Server Routing en Angular
10:43 - 35

Aplicaciones Sin Zone.js: Migración a Signals en Angular
13:02 - 36

Despliegue y Reactividad Avanzada en Angular
00:53
La gestión de ambientes en Angular es un elemento crucial para el desarrollo de aplicaciones robustas y escalables. Configurar correctamente los entornos de desarrollo y producción permite mantener separadas las configuraciones específicas para cada fase del ciclo de vida de tu aplicación, evitando problemas potenciales y facilitando el mantenimiento. Esta práctica no solo es relevante en Angular, sino que constituye un estándar en el desarrollo de software moderno.
¿Qué son los ambientes en Angular y por qué son importantes?
Los ambientes en Angular son configuraciones específicas que permiten a los desarrolladores definir variables y ajustes que cambiarán según el entorno donde se ejecute la aplicación. Por defecto, Angular maneja dos ambientes principales: desarrollo y producción.
La importancia de estos ambientes radica en varios aspectos:
- Permiten conectarse a diferentes APIs según el entorno (desarrollo local vs servidor de producción)
- Evitan modificaciones accidentales en datos de producción durante la fase de desarrollo
- Facilitan la configuración de características específicas para cada entorno
- Mejoran la seguridad al separar claves y tokens sensibles
Angular no tiene estos ambientes configurados por defecto, por lo que debemos habilitarlos explícitamente para aprovechar sus beneficios.
¿Cómo habilitar los ambientes en Angular?
Para habilitar los ambientes en Angular, debemos ejecutar el siguiente comando:
ng generate environment
Este comando creará automáticamente una carpeta environments con dos archivos:
environment.ts: Configuración para el ambiente de producciónenvironment.development.ts: Configuración para el ambiente de desarrollo
Estos archivos inicialmente contienen un objeto JavaScript vacío, que podemos personalizar según nuestras necesidades. La estructura básica recomendada incluye al menos una propiedad que indique si estamos en producción:
// environment.ts (producción)
export const environment = {
production: true,
apiUrl: 'https://api.midominio.com'
};
// environment.development.ts (desarrollo)
export const environment = {
production: false,
apiUrl: 'http://localhost:3001'
};
¿Cómo configurar y utilizar los ambientes correctamente?
Una vez habilitados los ambientes, es importante configurarlos adecuadamente para maximizar sus beneficios.
Configuración de URLs de API
Una práctica recomendada es configurar diferentes URLs de API para cada ambiente:
-
En desarrollo: Utiliza una API local o un endpoint específico para pruebas
apiUrl: 'http://localhost:3001' // o apiUrl: 'https://dev.api.midominio.com' -
En producción: Utiliza la API real de producción
apiUrl: 'https://api.midominio.com'
Es importante no incluir rutas específicas en estas URLs, solo el dominio base. Las rutas específicas se agregarán en los servicios que consuman la API.
Implementación en los servicios
Para utilizar estas configuraciones en nuestros servicios, debemos importar el archivo de environment:
import { environment } from '../environments/environment';
@Injectable({
providedIn: 'root'
})
export class ProductsService {
private apiUrl = environment.apiUrl;
constructor(private http: HttpClient) { }
getAllProducts() {
return this.http.get(`${this.apiUrl}/products`);
}
}
Angular automáticamente seleccionará el archivo correcto según el comando que utilicemos:
ng serve: Utilizaráenvironment.development.tsng build: Utilizaráenvironment.ts(producción)
Optimización de importaciones con Short Imports
Para mejorar la legibilidad del código y facilitar las importaciones, podemos configurar "short imports" en el archivo tsconfig.json:
{
"compilerOptions": {
"paths": {
"@env/*": ["src/environments/*"]
}
}
}
Esto nos permitirá importar los ambientes de forma más limpia:
// Antes
import { environment } from '../../environments/environment';
// Después
import { environment } from '@env/environment';
¿Cómo funcionan los ambientes en tiempo de ejecución?
El comportamiento de los ambientes en Angular es automático y depende del comando que utilicemos para ejecutar o construir nuestra aplicación:
- Durante el desarrollo (
ng serve), Angular utilizará automáticamente la configuración deenvironment.development.ts. - Al construir para producción (
ng build), Angular utilizará la configuración deenvironment.ts.
Este cambio es transparente para el desarrollador y no requiere configuración adicional, siempre que hayamos importado correctamente el archivo de environment en nuestros servicios.
Para verificar que estamos utilizando el ambiente correcto, podemos revisar las peticiones de red en las herramientas de desarrollo del navegador y confirmar que se están realizando a la URL configurada en el ambiente correspondiente.
Los ambientes en Angular son una herramienta poderosa que nos permite mantener configuraciones separadas para diferentes etapas del desarrollo. Implementarlos correctamente mejora la seguridad, facilita el mantenimiento y evita errores accidentales en producción. ¿Has implementado ambientes en tus proyectos de Angular? ¿Qué otras configuraciones específicas sueles incluir en cada ambiente? Comparte tu experiencia en los comentarios.