Tutorial Node.js | Contenedor de Dependencias con Awilix

Tutorial Node.js | Contenedor de Dependencias con Awilix

Contenedores de Dependencia

Resumen de la sección: En esta sección, el presentador introduce el principio de inversión de dependencias y cómo los contenedores de dependencia pueden ayudar a aplicarlo. También explica cómo funcionan los contenedores de dependencia y por qué son útiles.

Introducción al principio de inversión de dependencias

  • El principio establece que las clases de alto nivel no deben depender directamente de las clases de bajo nivel.
  • Las abstracciones no deben depender de los detalles.
  • Una forma comúnmente utilizada para aplicar este principio es inyectando las dependencias en el constructor del módulo.

Creación y uso del contenedor de dependencia

  • Un contenedor de dependencia es una caja donde se guardan todos los módulos necesarios para la aplicación.
  • Cuando se necesita un módulo, en lugar de crearlo manualmente, se obtiene del contenedor.
  • El contenedor se encarga automáticamente de crear todas las instancias necesarias para cada módulo.

Características fundamentales del contenedor adecuado

  • La lógica del dominio no debe conocer nada sobre el contenedor.
  • Se debe poder registrar dependencias en tiempo real.

Contenedores de Dependencias

Resumen de la sección: En esta sección, se habla sobre los contenedores de dependencias y cómo pueden ayudar a resolver los módulos de una aplicación.

¿Qué son los contenedores de dependencias?

  • Los contenedores de dependencias son herramientas que nos ayudan a resolver los módulos de nuestra aplicación.
  • Siguen el principio de inversión de dependencia, lo que significa que la responsabilidad ya no recae en nosotros mismos sino en el contenedor.

Ventajas del uso de contenedores

  • Los contenedores permiten registrar clases, gestar valores y hacer alias.
  • Permiten crear instancias en escopos transient muy potentes.
  • El uso del contenedor permite evitar tener que pasar manualmente todas las instancias necesarias.

Cómo utilizar un contenedor

  • Creamos el contenedor utilizando alguna librería como Dagger o Koin.
  • Registramos en este contenedor todos los módulos que posteriormente vamos a querer acceder.
  • Luego resolvemos las dependencias utilizando el mismo.

Utilizando Dagger para manejar módulos

Resumen de la sección: En esta sección, se explica cómo utilizar Dagger para manejar módulos en una aplicación.

Cómo funciona Dagger

  • Dagger es un framework que utiliza anotaciones para generar código automáticamente.
  • Detecta cuando una clase necesita una dependencia y la inyecta automáticamente si está disponible en su grafo.

Ventajas del uso de Dagger

  • Permite ahorrar tiempo al no tener que preocuparse por pasar manualmente todas las instancias necesarias.
  • Es muy útil cuando la aplicación empieza a crecer y se vuelve difícil manejar todas las dependencias manualmente.

Cómo utilizar Dagger en nuestro proyecto

  • Creamos el contenedor utilizando Dagger.
  • Registramos en este contenedor todos los módulos que posteriormente vamos a querer acceder.
  • Luego resolvemos las dependencias utilizando el mismo.

Conclusiones

Resumen de la sección: En esta sección, se concluye sobre los beneficios del uso de contenedores de dependencias y Dagger en una aplicación.

Beneficios del uso de contenedores y Dagger

  • Los contenedores de dependencias y Dagger permiten resolver los módulos de una aplicación de manera sencilla.
  • Permiten ahorrar tiempo al no tener que preocuparse por pasar manualmente todas las instancias necesarias.
  • Son muy útiles cuando la aplicación empieza a crecer y se vuelve difícil manejar todas las dependencias manualmente.
Video description

En este video vamos a ver una introducción a los contenedores de dependencias, qué son y cómo podemos empezar a utilizarlos. El proyecto del video se puede encontrar disponible en el siguiente enlace: https://github.com/AlbertHernandez/awilix-ts-example 🔔 No te olvides de suscribirte y activar la campanita ► https://www.youtube.com/c/AlbertHernandez?sub_confirmation=1 -- Mi setup: Ordenador: iMac 5K 27'' 2017 Cámara: Logitech Brio 4k Ratón: Logitech MX Master 3 Teclado: Apple Magic Keyboard US Layout Micrófono: Shure SM7B Brazo de micrófono: Rode PSA1 Puedes encontrarme en: https://alberthernandez.dev

Tutorial Node.js | Contenedor de Dependencias con Awilix | YouTube Video Summary | Video Highlight