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

This talk has been presented at Vue.js London 2023, check out the latest edition of this JavaScript Conference.

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
State management is not limited to complex applications and transitioning to a store offers significant benefits. Pinia is a centralized state management solution compatible with Vue 2 and Vue 3, providing advanced devtools support and extensibility with plugins. The core API of Pinia is similar to Vuex, but with a less verbose version of stores and powerful plugins. Pinia allows for easy state inspection, error handling, and testing. It is recommended to create one file per store for better organization and Pinia offers a more efficient performance compared to V-rex.
Bienvenido a Nuxt 3
Vue.js London Live 2021Vue.js London Live 2021
29 min
Bienvenido a Nuxt 3
Top Content
Nux3 has made significant improvements in performance, output optimization, and serverless support. Nuxt Bridge brings the Nitro engine for enhanced performance and easier transition between Nuxt 2 and Nuxt Read. Nuxt 3 supports Webpack 5, Bytes, and Vue 3. NextLab has developed brand new websites using Docus technology. Nuxt.js is recommended for building apps faster and simpler, and Nuxt 2 should be used before migrating to Nuxt 3 for stability. DOCUS is a new project that combines Nuxt with additional features like content modules and an admin panel.
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 has seen significant adoption and improvements in performance, bundle size, architecture, and TypeScript integration. The ecosystem around Vue 3 is catching up, with new tools and frameworks being developed. The Vue.js.org documentation is undergoing a complete overhaul. PNIA is emerging as the go-to state management solution for Vue 3. The options API and composition API are both viable options in Vue 3, with the choice depending on factors such as complexity and familiarity with TypeScript. Vue 3 continues to support CDN installation and is recommended for new projects.
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
In this Talk, the speaker demonstrates how to use Rust with WebAssembly in a Vue.js project. They explain that WebAssembly is a binary format that allows for high-performance code and less memory usage in the browser. The speaker shows how to build a Rust example using the WasmPack tool and integrate it into a Vue template. They also demonstrate how to call Rust code from a Vue component and deploy the resulting package to npm for easy sharing and consumption.
Vue: Actualizaciones de Características
Vue.js London 2023Vue.js London 2023
44 min
Vue: Actualizaciones de Características
Top Content
The Talk discusses the recent feature updates in Vue 3.3, focusing on script setup and TypeScript support. It covers improvements in defining props using imported types and complex types support. The introduction of generic components and reworked signatures for defined components provides more flexibility and better type support. Other features include automatic inference of runtime props, improved define emits and defined slots, and experimental features like reactive props destructure and define model. The Talk also mentions future plans for Vue, including stabilizing suspense and enhancing computer invalidations.
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
This Talk discusses handling local state in software development, particularly when dealing with asynchronous behavior and API requests. It explores the challenges of managing global state and the need for actions when handling server data. The Talk also highlights the issue of fetching data not in Vuex and the challenges of keeping data up-to-date in Vuex. It mentions alternative tools like Apollo Client and React Query for handling local state. The Talk concludes with a discussion on GitLab going public and the celebration that followed.

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.
Monitoreo 101 para Desarrolladores de React
React Summit US 2023React Summit US 2023
107 min
Monitoreo 101 para Desarrolladores de React
Top Content
WorkshopFree
Lazar Nikolov
Sarah Guthals
2 authors
Si encontrar errores en tu proyecto frontend es como buscar una aguja en un pajar de código, entonces el monitoreo de errores de Sentry puede ser tu detector de metales. Aprende los conceptos básicos del monitoreo de errores con Sentry. Ya sea que estés ejecutando un proyecto de React, Angular, Vue, o simplemente JavaScript “vainilla”, mira cómo Sentry puede ayudarte a encontrar el quién, qué, cuándo y dónde detrás de los errores en tu proyecto frontend.
Nivel de la masterclass: Intermedio
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.