Introducción a Angular y Fundamentos

1

Aprende Angular 17

2

Creando tu primer proyecto en Angular

3

Implementando estilos

4

Mostrando elementos

5

Property Binding en Angular

6

Event Binding: click y doble click

7

Event binding: keydown

8

Modelo de reactividad con Signals

9

Creando un Signal en Angular

Estructuras de control en Angular

10

Directivas de control

11

Uso de ngFor

12

ngFor para objetos

13

Update Tasks

14

Uso de ngIf

15

Uso de ngSwitch y ngSwitchDefault

16

Controlando un input

17

Manejo de formularios en Angular

Alistando tu aplicación para producción

18

Estilos al modo Angular

19

Clases en Angular

20

Editing mode

21

Estados compuestos con computed

22

Usando effect para localStorage

23

Uso de ngbuild

24

Despliegue con Firebase Hosting

25

Nueva sintaxis en Angular

26

Directivas @For, @switch

27

Migrando a la nueva sintaxis de Angular v17

Componentes Reutilizables y Comunicación

28

Construyendo un e-commerce en Angular

29

Componentes en Angular

30

Mostrando los componentes

31

Angular DevTools

32

Uso de Inputs en Angular

33

Uso de Outputs en Angular

34

Componentes para Producto

Ciclo de vida de los componentes

35

Ciclo de vida de componentes

36

Ciclo de vida de componentes: ngOnChanges

37

Ciclo de vida de componentes: ngOnInit

38

Detectando cambios en los inputs

39

Evitando memory leaks con ngDestroy

40

Audio player con ngAfterViewInit

41

Creando la página "about us" o "conócenos"

Mejorando la interfaz del producto

42

Creando componente de productos

43

Creando el Header

44

Creando el carrito de compras

45

Comunicación padre e hijo

46

Calculando el total con ngOnChanges

47

El problema del prop drilling

48

Reactividad con signals en servicios

49

Entendiendo la inyección de dependencias

Integración y Datos

50

Obteniendo datos una REST API

51

Importaciones cortas en Typescript

52

Pipes en Angular

53

Construyendo tu propio pipe

54

Utilizando librerías de JavaScript en Angular

55

Conociendo las directivas

56

Deployando un proyecto en Vercel

Enrutamiento y Navegación

57

Ruta 404

58

Uso del RouterLink

59

Vistas anidadas

60

Uso del RouterLinkActive

61

Detalle de cada producto

62

Obteniendo datos del producto

63

Galería de imagenes

64

Detalle de la galería

Perfeccionando tu e-commerce

65

Mostrando categorias desde la API

66

Url Params

67

LazyLoading y Code Splitting

68

Aplicando LazyLoading

69

Prefetching

70

Usando la nueva sintaxis de Angular 17

71

Lanzando tu aplicación a producción

No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Aplicando LazyLoading

68/71
Recursos

¿Cómo optimizar el tamaño de un archivo JavaScript en una aplicación Angular?

En el mundo del desarrollo web, la optimización del tamaño y carga de archivos es crucial para mejorar el rendimiento de cualquier aplicación. Angular, uno de los frameworks más populares, ofrece técnicas eficientes para manejar esta optimización durante el proceso de desarrollo y producción. Una herramienta fundamental en esta tarea es la implementación de carga diferida o lazy loading y la técnica de Code Splitting.

¿Qué son Code Splitting y Lazy Loading?

Code Splitting, o la división de código, permite dividir una aplicación en módulos más pequeños, o "chunks". Estos módulos son independientes y se cargan solo cuando son necesarios. Lazy Loading lleva esto un paso más allá al cargar estos módulos específicos solo cuando el usuario navega a esas rutas. Esto significa que el peso y el procesamiento de la aplicación se reducen porque se está entregando al usuario solo lo necesario.

¿Cómo implementar Code Splitting en Angular?

Para aprovechar Code Splitting en Angular, puedes seguir estos pasos sencillos utilizando importaciones dinámicas:

  1. Cambiar el manejo del componente:

    • En lugar de usar el atributo component en tu archivo de rutas, utiliza loadComponent.
  2. Utilizar Importaciones Dinámicas:

    • Crea una función de carga dinámica usando import:
      loadComponent: () => import('./pages/list/list.component').then(m => m.ListComponent)
      
  3. Usar una función Arrow:

    • Encapsula el import dentro de una función flecha para que se cargue de manera asíncrona.
  4. Agregar exportación por defecto:

    • Optimiza aún más agregando export default a tu componente, lo que elimina la necesidad de .then.

Con estos pasos, puedes implementar la carga diferida para tus componentes, mejorando la respuesta y el rendimiento general de tu aplicación web.

¿Qué beneficios ofrece la carga diferida y los chunks?

Implementar Code Splitting y Lazy Loading trae varios beneficios considerables para cualquier aplicación Angular:

  • Reducción del Tiempo Inicial de Carga: Solo se carga lo necesario para la vista inicial, reduciendo el tiempo que tarda la aplicación en abrirse.
  • Optimización del Uso de Banda Ancha: Menos datos cargados simultáneamente, lo que se traduce en una navegación más fluida.
  • Eficiencia en Modo Desarrollo y Producción: Aunque el desarrollo puede no mostrar todas las mejoras, compilar para producción optimiza los archivos aún más, maximizando los resultados.

¿Cómo verificar las mejoras?

Una vez implementada la carga diferida, puedes utilizar la herramienta de inspección del navegador o ejecutar ngBuild para evaluar cómo se han reducido y optimizado los archivos de JavaScript en producción. Esto te dará una visión clara de los beneficios que has incorporado al emplear estas prácticas óptimas de desarrollo.

¡No dudes en seguir explorando estas técnicas para continuar optimizando tus aplicaciones Angular!

Aportes 7

Preguntas 2

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

🤯
Sí, antes de Angular 13, `loadChildren` se utilizaba para implementar el lazy loading de módulos. Sin embargo, desde Angular 13, se introdujo una sintaxis más moderna y flexible, permitiendo que se use `loadComponent` para cargar componentes de manera dinámica. Aunque `loadChildren` todavía está disponible y puede usarse, es recomendable adoptar `loadComponent` para beneficios de rendimiento y claridad. Ambas opciones son válidas en las versiones actuales, pero es mejor utilizar la más reciente.

Se me hace muy extraño que angular no haga el code splitting por defecto

El uso de `loadComponent` está disponible a partir de Angular 13, donde se introdujo la capacidad de cargar componentes de manera dinámica utilizando importaciones. Esto permite optimizar la carga de aplicaciones y mejorar el rendimiento mediante el uso de lazy loading. Versiones anteriores a Angular 13 no soportan esta funcionalidad directamente. Es recomendable usar la versión más reciente de Angular para aprovechar todas las mejoras y actualizaciones de rendimiento.

Interesante tecnica para mejorar el rendimiento.

Por cierto tuve un pequeño problema con: ![](https://static.platzi.com/media/user_upload/image-5adc7a32-aedc-4bc4-adc9-3c2fc4c934d3.jpg) Investigué y me indica esto: ### **¿Es correcto usar prerenderizado en rutas dinámicas como** `product/:id`**?** Aquí es donde surge el problema. **Rutas dinámicas como** `product/:id` pueden ser difíciles de prerenderizar de manera efectiva sin proporcionar todos los parámetros necesarios de antemano (en tu caso, los diferentes `id` de los productos). Si no proporcionas todos los parámetros (`id` de productos, por ejemplo) al momento de la construcción, Angular Universal no podrá prerenderizar esas páginas correctamente. * **Prerenderizado en rutas dinámicas** (como `product/:id`) puede no ser una solución adecuada debido a la necesidad de predefinir todos los parámetros (`id`), lo que podría generar errores o comportamiento inesperado en el frontend. * Si las rutas son **dinámicas y cambiantes**, la mejor alternativa es **Server-Side Rendering (SSR)**, que maneja las rutas dinámicas de manera más flexible y eficiente. * Si decides seguir con el **prerenderizado**, asegúrate de manejar correctamente los parámetros dinámicos con herramientas como `getPrerenderParams` para evitar problemas de carga y SEO.