Diseño Dirigido por Dominio con Aplicaciones Vue

Spanish audio is available in the player settings
Rate this content
Bookmark
SlidesGithub

Introducción al Diseño Dirigido por Dominio

  • - ¿Qué es DDD?
  • - Principios clave de DDD
  • - Beneficios de usar DDD en el desarrollo de aplicaciones web

Modelado de Dominio en Aplicaciones Vue 3

  • - Cómo diseñar e implementar modelos de dominio en Vue 3
  • - Estrategias para integrar la lógica de dominio con el modelo de datos reactivo de Vue y la arquitectura basada en componentes

Mejores Prácticas para Implementar DDD en Vue 3

  • - Estrategias para organizar el código de una manera que siga los principios de DDD
  • - Técnicas para reducir el acoplamiento entre la lógica de dominio y la lógica de la aplicación
  • - Consejos para probar y depurar la lógica de dominio en las aplicaciones Vue 3

FAQ

El diseño dirigido por dominio (DDD) es un enfoque de diseño que se centra en modelar software para que coincida con un dominio específico, basándose en la entrada de expertos en ese dominio. Este enfoque ayuda a crear un dominio que refleje el lenguaje, los conceptos y las relaciones internas, facilitando un mejor entendimiento de las entidades empresariales y mejorando la calidad del diseño del software.

Aplicar DDD en Vue.js permite una modelización más efectiva de dominios empresariales complejos, una estructura de código más organizada que refleja la lógica del dominio y facilita el mantenimiento, la escalabilidad y la flexibilidad en el desarrollo de software. Además, mejora la construcción de interfaces de usuario y la incorporación y propiedad de los productos por parte de los ingenieros.

Mientras que MVVM en Vue.js organiza la estructura de la carpeta por relación con los aspectos funcionales como router, tienda y componentes, DDD organiza la aplicación en dominios o modelos específicos como pagos o productos. Cada dominio puede tener su propio componente, tienda, router y páginas, lo que facilita el mantenimiento a largo plazo.

Aplicaciones como plataformas de e-commerce con sistemas complejos de productos e inventario, aplicaciones financieras con modelos de datos complejos y requisitos regulatorios, o aplicaciones de atención médica con datos de pacientes complejos son ejemplos donde DDD puede ser especialmente útil debido a su capacidad para manejar complejidades y requerimientos empresariales específicos.

En una aplicación Vue.js simple implementada con DDD, encontraríamos una estructura de carpetas que incluye un núcleo y módulos que representan los dominios centrales. Cada módulo podría tener su propia API, componentes, constantes, páginas, rutas y tienda, permitiendo una adaptación más fácil a requisitos y lógica empresarial específicos.

Abdulrasaq Mustapha
Abdulrasaq Mustapha
14 min
15 May, 2023

Comments

Sign in or register to post your comment.
  • Kirk Bushell
    Kirk Bushell
    Where's the domain modeling in vue 3? Where's the domain logic stuff when working with vue reactive data model? Just another video/page stating "DDD" by introducing a folder structure... Bollocks.
  • Baraka
    Baraka
    any link to the code??

Video Summary and Transcription

Bienvenidos a esta charla sobre diseño dirigido por dominio en la aplicación Vue.js. Hoy vamos a explorar el diseño dirigido por dominio, sus beneficios y cómo funciona con el diseño dirigido por dominio de Vue.js versus el modelo MVVM. Vue.js prospera en el diseño dirigido por dominio, un enfoque de diseño que modela el software para que coincida con un dominio. DDD enfatiza la comprensión de la lógica empresarial y la creación de un dominio que refleje el lenguaje y los conceptos. La integración de DDD en Vue.js ofrece beneficios como el modelado efectivo de dominios empresariales complejos, código estructurado que refleja la lógica del dominio y una incorporación y propiedad más fáciles.

1. Introducción al diseño dirigido por dominio en Vue.js

Short description:

Bienvenidos a esta charla sobre el diseño dirigido por dominio en la aplicación Vue.js. Hoy vamos a examinar el diseño dirigido por dominio, sus beneficios y cómo funciona con el diseño dirigido por dominio de Vue.js frente al modelo MVVM. También vamos a echar un vistazo rápido a un código simple basado en la estructura de una aplicación Vue.js escrita en un patrón de diseño dirigido por dominio. Existen varios patrones de diseño que sabemos que existen en el ciclo de desarrollo de software.

Bienvenidos a esta charla sobre el diseño dirigido por dominio en la aplicación Vue.js. Mi nombre es Abdurazak Mostafa, también conocido como Geekmarrers. Soy un ingeniero frontend en Papershift. Soy un creador de contenido en YouTube donde publico videos sobre tutoriales de codificación, portadores de productividad y muchos otros. También puedes encontrarme en GitHub como Geekmarrers.

Hoy vamos a examinar el diseño dirigido por dominio, sus beneficios y cómo funciona con el diseño dirigido por dominio de Vue.js frente al modelo MVVM. También vamos a echar un vistazo rápido a un código simple basado en la estructura de una aplicación Vue.js escrita en un patrón de diseño dirigido por dominio.

Existen varios patrones de diseño que sabemos que existen en el ciclo de desarrollo de software. Tenemos el diseño orientado a objetos, tenemos el MVC, tenemos el DDD, y el MVVM, y muchos otros. Cuando miramos el OOD, que es el diseño orientado a objetos, que es un proceso de creación de un sistema de software o aplicación, utilizando el paradigma orientado a objetos, el MVC, que es el modelo Vue controladores, es un patrón de diseño utilizado para desarrollar interfaces de usuario que dividen la lógica de programa relacionada en tres elementos conectados, que son los modelos de Vue y el controlador, el MVVM, que son los modelos de Vue Vue modelo, que es algo así como el patrón para las aplicaciones de Vue.js, el patrón para las aplicaciones de Vue.js por defecto, que es un patrón que ayuda a separar limpiamente la lógica de negocio y presentación de una aplicación de su interfaz de usuario.

2. Introducción al DDD en Vue.js

Short description:

Vue.js prospera en el diseño dirigido por dominio, un enfoque de diseño que modela el software para que coincida con un dominio. DDD enfatiza en la comprensión de la lógica empresarial y en la creación de un dominio que refleje el lenguaje y los conceptos. En comparación con MVVM, DDD sigue un enfoque centrado en el dominio, lo que resulta en un código más limpio y mantenible. La integración de DDD en Vue.js ofrece beneficios como la modelización efectiva de dominios empresariales complejos, código estructurado que refleja la lógica del dominio y una incorporación y propiedad más fáciles. Los casos de uso para DDD en Vue.js incluyen aplicaciones de comercio electrónico, financieras y de atención médica. Un ejemplo de base de código simple demuestra cómo se puede implementar DDD en una aplicación Vue.js.

Todos sabemos que esto es una de las cosas en las que Vue.js prospera. El discurso principal del día es el diseño dirigido por dominio, que es un enfoque de diseño que se centra en modelar software para que coincida con un dominio según la entrada de los expertos en el dominio. Con esto, vamos a explicar más en las diapositivas.

Cuando miramos el DDD, que es el Diseño Dirigido por Dominio, es un enfoque para el desarrollo de software, que enfatiza en entender la lógica empresarial y modelar el dominio del problema. El objetivo es crear un dominio que refleje con precisión el lenguaje, los conceptos y las relaciones dentro del dominio, y esto a su vez ayuda al equipo a entender mejor las entidades empresariales complejas, lo que lleva a un mejor diseño de software y a la escritura de códigos mantenibles.

Cuando miramos la estructura del diseño dirigido por dominio en comparación con el MVVM predeterminado, el MVVM divide la estructura de la carpeta por relación con los aspectos funcionales de la base de code como el router, la tienda, las páginas, los componentes, los activos y muchas más carpetas personalizadas que queremos añadir a nuestra aplicación. Bueno, el enfoque DDD sigue un dominio en lugar de un MVVM suelto, lo que significa que nuestra aplicación está realmente desintegrada en los dominios centrales de nuestras aplicaciones. Y estos dominios, este dominio puede contener carpetas, y estas carpetas son como los modelos centrales en los que nuestras aplicaciones están utilizando, por lo que podrías tener un dominio de pagos, podrías tener como un dominio de productos, podrías tener un dominio de pedidos, podrías tener un perfil de usuario dominio, y muchas características dependiendo de los modelos o dominio de las aplicaciones que estamos construyendo.

Cuando miramos la estructura de carpetas predeterminada para el MVVM predeterminado, que es básicamente lo que obtendrías cuando generas la aplicación Vue.js, los activos, los componentes, los routers, las tiendas, las vistas. Con esto, si estás construyendo una aplicación más grande, podrías tener problemas cuando la aplicación se haga grande y aún si construyes con esta estructura predeterminada, podría ser difícil de mantener a largo plazo. ¿Verdad? Y esto es una de las cosas donde el diseño dirigido por dominio prospera. Y eso es porque para cada uno de nuestros dominios o para cada uno de nuestros modelos, va a tener su propio componente. Va a tener su propia tienda. Va a tener su propio router. Va a tener sus propias páginas y sus propias pruebas y muchas otras características personalizadas que podríamos querer añadir a nuestros varios dominios. Y con esto, es más limpio y más fácil de mantener a largo plazo.

Así que el beneficio de integrar el diseño dirigido por dominio a nuestra aplicación VGS es porque es una modelización más efectiva de dominios empresariales complejos. Es una base de code más estructurada y organizada que refleja la lógica del dominio. Es más mantenible, escalable y flexible en el desarrollo de aplicaciones de software. Es más efectivo en la construcción de interfaces de usuario. Creo que una de las cosas hermosas del DDD es que es para una fácil incorporación y propiedad de los productos dominados por los ingenieros dentro del equipo.

Entonces, ¿cuáles son los casos de uso para DDD con la aplicación VGS? Este patrón puede ser utilizado para construir aplicaciones de e-commerce con sistemas complejos de productos e inventario de gestión, aplicaciones financieras con modelos de data complejos y requisitos regulatorios. También puede ser utilizado en aplicaciones de atención médica con data de pacientes complejos y preocupaciones pervasivas y muchos otros dominios empresariales complejos en los que podemos incorporar el patrón DDD en nuestro software.

Así que vamos a echar un vistazo rápido a una base de código simple o a una estructura simple de cómo se puede implementar el DDD en una aplicación VGS. Voy a empezar con esto, con esta simple aplicación, y cuando miremos nuestra estructura de carpetas aquí, encontraremos que no es como el patrón regular de la cual la aplicación VGS tiene, que va a tener como, por defecto deberíamos ver las rutas, deberíamos ver la tienda, deberíamos ver los componentes y muchos otros. Porque esta aplicación ha sido convertida o el enfoque DDD ha sido implementado en esta aplicación simple, donde tenemos en nuestra fuente, tenemos una aplicación, tenemos una carpeta llamada el núcleo, que es como el modelo de la aplicación y es como la capa superior de nuestra aplicación, y en esa ruta vamos a tener nuestros modules, nuestros modules que son la parte central o los dominios centrales de nuestra aplicación. Y este simple ejemplo viene con solo dos dominios que son, o dos modules, que son solo el módulo de blog y el módulo de producto, y encontraremos aquí que para cada modelo es que tiene su propia API, sus propios componentes, sus propias constantes, sus propias páginas, sus propias rutas y su propia tienda. Y con esto, es bastante más fácil para nosotros ver la aplicación adaptada a un dominio particular y también asegurando que se cumplen la lógica empresarial y los requisitos empresariales. Y una de las cosas hermosas es que cuando miramos nuestro archivo de entrada, que es el main.js, encontraríamos una hermosa función de importación, que es la ruta de carga automática, que básicamente mira todos los dominios que tenemos, todos los modelos que tenemos en nuestra aplicación, obtiene la ruta, y luego podemos añadir esas rutas a nuestra aplicación en una escala más grande. Y cuando echamos un vistazo a esto en Así que solo voy a echar un vistazo a esto, veremos el dominio del producto, veremos el blog.

Check out more articles and videos

We constantly think of articles and videos that might spark Git people interest / skill us up or help building a stellar career

Todo Más Allá de la Gestión de Estado en Tiendas con Pinia
Vue.js London Live 2021Vue.js London Live 2021
34 min
Todo Más Allá de la Gestión de Estado en Tiendas con Pinia
Top Content
Cuando pensamos en Vuex, Pinia, o tiendas en general, a menudo pensamos en la gestión de estado y los patrones Flux, pero no solo las tiendas no siempre siguen el patrón Flux, ¡hay mucho más en las tiendas que las hace valer la pena usar! Plugins, Devtools, renderizado en el lado del servidor, integraciones TypeScript... Vamos a sumergirnos en todo más allá de la gestión de estado con Pinia con ejemplos prácticos sobre plugins y Devtools para sacar el máximo provecho de tus tiendas.
Bienvenido a Nuxt 3
Vue.js London Live 2021Vue.js London Live 2021
29 min
Bienvenido a Nuxt 3
Top Content
Explica sobre la refactorización del código base de NuxtJS y los desafíos que enfrenta para implementar Vue 3, Vite y otros paquetes.
Un Año en Vue 3
Vue.js London Live 2021Vue.js London Live 2021
20 min
Un Año en Vue 3
Top Content
Vue 3 puede sonar aún nuevo para muchos usuarios, pero en realidad ya ha sido lanzado hace más de un año. ¿Cómo evolucionó Vue 3 durante este período? ¿Por qué tardó tanto en ponerse al día el ecosistema? ¿Qué aprendimos de este proceso? ¿Qué viene después? ¡Discutiremos estas preguntas en esta charla!
Utilizando Rust desde Vue con WebAssembly
Vue.js London Live 2021Vue.js London Live 2021
8 min
Utilizando Rust desde Vue con WebAssembly
Top Content
Rust es un nuevo lenguaje para escribir código de alto rendimiento, que puede ser compilado a WebAssembly, y ejecutado dentro del navegador. En esta charla se te guiará sobre cómo puedes integrar Rust, dentro de una aplicación Vue, de una manera que es sencilla y fácil. Con ejemplos de cómo interactuar con Rust desde JavaScript, y algunas de las trampas a tener en cuenta.
Vue: Actualizaciones de Características
Vue.js London 2023Vue.js London 2023
44 min
Vue: Actualizaciones de Características
Top Content
El creador de Vue js da una actualización sobre las nuevas características de la tecnología.
Estado Local y Caché del Servidor: Encontrando un Equilibrio
Vue.js London Live 2021Vue.js London Live 2021
24 min
Estado Local y Caché del Servidor: Encontrando un Equilibrio
Top Content
¿Cuántas veces has implementado el mismo flujo en tu aplicación: verificar si los datos ya se han obtenido del servidor, si es así - renderizar los datos, si no - obtener estos datos y luego renderizarlos? Creo que lo he hecho más de diez veces yo mismo y he visto la pregunta sobre este flujo más de cincuenta veces. Desafortunadamente, nuestra biblioteca de gestión de estado predeterminada, Vuex, no proporciona ninguna solución para esto.Para la aplicación basada en GraphQL, había una alternativa para usar el cliente Apollo que proporcionaba herramientas para trabajar con la caché. Pero, ¿qué pasa si usas REST? Afortunadamente, ahora tenemos una alternativa de Vue a una biblioteca de react-query que proporciona una buena solución para trabajar con la caché del servidor. En esta charla, explicaré la distinción entre el estado de la aplicación local y la caché del servidor local y haré algo de codificación en vivo para mostrar cómo trabajar con este último.

Workshops on related topic

Vue3: Desarrollo Moderno de Aplicaciones Frontend
Vue.js London Live 2021Vue.js London Live 2021
169 min
Vue3: Desarrollo Moderno de Aplicaciones Frontend
Top Content
Featured WorkshopFree
Mikhail Kuznetcov
Mikhail Kuznetcov
Vue3 fue lanzado a mediados de 2020. Además de muchas mejoras y optimizaciones, la principal característica que trae Vue3 es la API de Composición, una nueva forma de escribir y reutilizar código reactivo. Aprendamos más sobre cómo usar la API de Composición de manera eficiente.

Además de las características principales de Vue3, explicaremos ejemplos de cómo usar bibliotecas populares con Vue3.

Tabla de contenidos:
- Introducción a Vue3
- API de Composición
- Bibliotecas principales
- Ecosistema Vue3

Requisitos previos:
IDE de elección (Inellij o VSC) instalado
Nodejs + NPM
Usando Nitro - Construyendo una Aplicación con el Último Motor de Renderizado de Nuxt
Vue.js London Live 2021Vue.js London Live 2021
117 min
Usando Nitro - Construyendo una Aplicación con el Último Motor de Renderizado de Nuxt
Top Content
Workshop
Daniel Roe
Daniel Roe
Construiremos un proyecto Nuxt juntos desde cero usando Nitro, el nuevo motor de renderizado de Nuxt, y Nuxt Bridge. Exploraremos algunas de las formas en que puedes usar y desplegar Nitro, mientras construimos una aplicación juntos con algunas de las restricciones del mundo real que enfrentarías al desplegar una aplicación para tu empresa. En el camino, dispara tus preguntas hacia mí y haré lo mejor para responderlas.
Embarcándonos en una aventura con Nuxt 3, Motion UI y Azure
JSNation 2022JSNation 2022
141 min
Embarcándonos en una aventura con Nuxt 3, Motion UI y Azure
WorkshopFree
Melanie de Leeuw
Melanie de Leeuw
¡Nos encantan las aplicaciones web fáciles de crear y desplegar! Entonces, veamos qué puede hacer una pila tecnológica muy actual como Nuxt 3, Motion UI y Azure Static Web Apps. Podría ser perfectamente un trío de oro en el desarrollo web moderno. O podría ser una hoguera de errores y problemas. De cualquier manera, será una aventura de aprendizaje para todos nosotros. Nuxt 3 se lanzó hace apenas unos meses y no podemos esperar más para explorar sus nuevas características, como su compatibilidad con Vue 3 y el Motor Nitro. Agregamos un poco de estilo a nuestra aplicación con la biblioteca Sass Motion UI, porque el diseño estático está pasado de moda y las animaciones vuelven a estar de moda.Nuestra fuerza impulsora de la pila será Azure. Las aplicaciones web estáticas de Azure son nuevas, casi listas para producción y una forma ingeniosa y rápida para que los desarrolladores desplieguen sus sitios web. Así que, por supuesto, debemos probar esto.Con algunas Azure Functions esparcidas por encima, exploraremos lo que puede hacer el desarrollo web en 2022.
TresJS crea experiencias 3D de forma declarativa con componentes Vue
Vue.js London 2023Vue.js London 2023
137 min
TresJS crea experiencias 3D de forma declarativa con componentes Vue
Workshop
Alvaro Saburido
Alvaro Saburido
- Introducción a 3D- Introducción a WebGL- ThreeJS- Por qué TresJS- Instalación o configuración de Stackblitz- Conceptos básicos- Configuración del lienzo- Escena- Cámara- Agregar un objeto- Geometrías- Argumentos- Props- Slots- El bucle- Composable UseRenderLoop- Callbacks antes y después de la renderización- Animaciones básicas- Materiales- Material básico- Material normal- Material Toon- Material Lambert- Material estándar y físico- Metalness, roughness- Luces- Luz ambiental- Luz direccional- Luces puntuales- Sombras- Texturas- Cargar texturas con useTextures- Consejos y trucos- Misceláneo- Controles de órbita- Cargar modelos con Cientos- Depuración de tu escena- Rendimiento
Construyendo formularios Vue con VeeValidate
Vue.js London Live 2021Vue.js London Live 2021
176 min
Construyendo formularios Vue con VeeValidate
Workshop
Abdelrahman Awad
Abdelrahman Awad
En este masterclass, aprenderás cómo usar vee-validate para manejar la validación de formularios, gestionar los valores de los formularios y manejar las presentaciones de manera efectiva. Comenzaremos desde lo básico con un formulario de inicio de sesión simple hasta el uso de la API de composición y la construcción de formularios repetibles y de múltiples pasos.

Tabla de contenidos:
- Introducción a vee-validate
- Construcción de un formulario básico con componentes vee-validate
- Manejo de validación y presentaciones de formularios
- Construcción de componentes de entrada validables con la API de composición
- Arrays de campos e inputs repetibles
- Construcción de un formulario de múltiples pasos
Prerrequisitos:
Configuración de VSCode y un proyecto Vite + Vue vacío.
Construyendo aplicaciones GraphQL de pila completa con Hasura y Vue 3
Vue.js London Live 2021Vue.js London Live 2021
115 min
Construyendo aplicaciones GraphQL de pila completa con Hasura y Vue 3
WorkshopFree
Gavin Ray
Gavin Ray
El ecosistema frontend avanza a un ritmo frenético. Este masterclass tiene como objetivo equipar a los participantes con una comprensión del estado del ecosistema Vue 3 + GraphQL, explorando ese ecosistema - prácticamente y a través del desarrollo de aplicaciones de pila completa.

Tabla de contenidos
- Los participantes utilizarán Hasura para construir una API GraphQL en tiempo real respaldada por Postgres. Juntos recorreremos su consumo desde un frontend y haremos que el frontend sea reactivo, suscrito a los cambios de datos.
- Además, analizaremos las herramientas comúnmente utilizadas en el stack Vue GraphQL (como Apollo Client y Urql), discutiremos algunas alternativas menos conocidas y abordaremos los problemas frecuentemente encontrados al comenzar.
- Se describirán varios patrones para gestionar datos con estado y sus compensaciones durante el masterclass, y se mostrará una implementación básica para cada patrón discutido.
Nivel del masterclass

NOTA: No se requiere experiencia previa con GraphQL, pero puede ser útil para ayudar a la comprensión. Se cubrirán los fundamentos.