Todo Más Allá de la Gestión de Estado en Tiendas con Pinia

Rate this content
Bookmark

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.

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

FAQ

Eduardo es un desarrollador frontend que vive en París y es miembro del equipo central de Vue.js. Además, es el autor del enrutador de Vue.js y de una biblioteca llamada Pina.

Se debe considerar usar una solución de gestión del estado cuando la aplicación requiere compartir estados entre diferentes componentes o mantener estados persistentes a través de varias páginas, independientemente del tamaño de la aplicación.

Pina ofrece ventajas como un tamaño pequeño de aproximadamente 1.5 kilobytes, integración avanzada con DevTools, facilidad para manejar el estado con una API sencilla y eficiente, y soporte para renderización del lado del servidor.

Para integrar Pina, se debe importar la función createPina de la biblioteca Pina y luego crear un almacén de estados centralizado que se añade a la aplicación Vue durante su inicialización.

Pina proporciona funcionalidades como reemplazo de módulos en caliente, un módulo de pruebas, soporte avanzado para DevTools y una API de plugins que permite extender sus capacidades de manera segura y tipada.

La gestión del estado se refiere al manejo de cómo se almacena, modifica y gestiona el estado global de una aplicación a lo largo del tiempo. Incluye técnicas y herramientas que permiten actualizar el estado de la aplicación de manera controlada.

Pina es una pequeña biblioteca desarrollada por Eduardo que sirve como una alternativa a Vue.js para la gestión del estado en aplicaciones. Es una biblioteca de tiendas que proporciona funcionalidades similares a Vuex.

Eduardo San Martin Morote
Eduardo San Martin Morote
34 min
20 Oct, 2021

Comments

Sign in or register to post your comment.
Video Summary and Transcription
La gestión de estado no se limita a aplicaciones complejas y la transición a una tienda ofrece beneficios significativos. Pinia es una solución centralizada de gestión de estado compatible con Vue 2 y Vue 3, proporcionando soporte avanzado de devtools y extensibilidad con plugins. La API central de Pinia es similar a Vuex, pero con una versión menos verbosa de tiendas y plugins poderosos. Pinia permite una fácil inspección de estado, manejo de errores y pruebas. Se recomienda crear un archivo por tienda para una mejor organización y Pinia ofrece un rendimiento más eficiente en comparación con V-rex.

1. Introducción a la Gestión del Estado

Short description:

Hola, soy Eduardo, un desarrollador frontend y miembro del equipo central de Vue.js. Hoy, quiero discutir qué hay más allá de la gestión del estado y por qué importa. La gestión del estado no se limita a aplicaciones complejas. Depende de cómo se utiliza la tienda dentro de su aplicación. Pasar de una solución básica de gestión del estado global reactivo a una tienda es un pequeño paso con beneficios significativos, como la renderización del lado del servidor y los componentes de salida del estado. Un estado centralizado compartido por muchos componentes garantiza la escalabilidad.

Hola a todos. Mi nombre es Eduardo. Vivo en París. Soy un desarrollador frontend y también un miembro del equipo central de Vue.js. Soy el autor de su enrutador y una pequeña biblioteca llamada Pina, que es una alternativa a Vue.js, una biblioteca de tiendas, también, de la que voy a hablar hoy. Lo que quiero hablarles no es solo sobre Pina sino qué hay más allá de la gestión del estado, qué importa en la gestión del estado más que el estado en sí. Pero primero, antes de incluso sumergirse en Pina o cualquier otra cosa, ¿qué es la gestión del estado? Es solo tener un objeto global con algunas funciones como esa, estado global. Tienes una función de registro que te permite cambiar un estado. ¿Es esto la gestión del estado? Y la gente te dirá que lo es. Y para ser honesto, prácticamente lo es, especialmente si solo agregas una llamada de función reactiva alrededor de ese objeto. Bueno, tienes un estado completamente válido, una solución de estado global que funciona para tu aplicación de vista tres o vista dos. Y esto sigue siendo la gestión del estado y algunas personas te dirán que la gestión del estado es algo que tienes y creas cuando tienes aplicaciones más grandes o de tamaño mediano a grande o cuando sabes que tu aplicación va a crecer y va a necesitar esa complejidad en el futuro. Pero esto es prácticamente como, no necesitas tener una aplicación compleja para necesitar o considerar el uso de una solución de gestión del estado o una tienda. Lo que define si debes o no usar una solución de gestión del estado es cómo se utiliza la tienda dentro de tu aplicación. Por ejemplo, ¿se utiliza tu estado en muchos lugares diferentes en las páginas o tu estado sale de estas páginas? ¿Necesitas tu estado cuando pasas de una página a otra? Tal vez tu aplicación solo tiene tres páginas, pero requieres que ese estado salga de todas las páginas. Y en ese escenario necesitas una gestión del estado. Y luego la siguiente pregunta que viene a tu mente, a mi mente es ¿debería dejar de tener esa solución de gestión del estado global reactiva básica o debería usar una tienda? Y la verdad es que hay un paso muy pequeño para empezar a usar una tienda. Solo necesitas usar la tienda definida con PNIA o UX5 y puedes mantener prácticamente las mismas cosas que tenías. El estado va a estar en un estado vertical. Luego vas a tener, uh, la variable de estado global se va a convertir en estas. Entonces es igual a algo. Entonces el cambio es muy simple. Y el costo en términos de tamaño, también es, uh, muy pequeño es como 1.5 kilobytes para PNIA. Um, pero por supuesto viene con muchas otras cosas, ¿verdad? Entonces, ¿realmente necesitas una tienda? ¿Qué te hace cambiar de opinión? ¿Qué significa pasar de, está bien, voy a dejar de usar mi solución variable y empezar a usar una tienda. Y hay algunas razones que te harán ir en esa dirección. La principal razón es la renderización del lado del servidor, uh, definitivamente es mucho más fácil de manejar con una tienda como PNIA o Vuex, um, pero hay muchas más, así que también tienes componentes de salida del estado. Uh, esto prácticamente sale de la caja para las soluciones de gestión del estado también. Pero, uh, dependiendo de cómo y dónde quieras instanciarlo, el estado global no es algo que siempre viene. Y luego tienes el estado centralizado compartido por muchos componentes. Entonces, si creas un solo estado global, eso no va a escalar

2. Los Beneficios de Usar una Tienda como PNIA

Short description:

Si sigues añadiendo cosas a tu estado, se volverá más grande y complejo. Usar un objeto global para la gestión del estado carece de experiencia de desarrollador y dificulta el seguimiento de los cambios. Las pruebas e implementación de funcionalidades adicionales se vuelven más desafiantes. Con una tienda como PNIA, estos problemas se resuelven y todo viene de serie.

para siempre. Si sigues añadiendo cosas, nuevas funciones, nuevas propiedades a tu estado, en algún momento ese estado y ese archivo se van a hacer más grandes. También puedes dividir varios archivos, pero vas a hacer que tu objeto crezca en complejidad demasiado. Y eso va a crear todo Si observas el estado o haces cualquier otra cosa complicada. También tienes una mejor developer experience. Entonces, si estás usando un objeto global, no puedes inspeccionar, cambiar ese estado dentro de Dev Tools en algún lugar. Tienes que hacerlo manualmente a través del inspector de componentes. No tienes nada en la línea de tiempo. No sabes de dónde vienen los cambios en la tienda, en los estados Si quieres mantener tu estado mientras estás cambiando la tienda o tu solución de state management, va a recargar la página, tendrás que manejar la sustitución en caliente tú mismo. Luego, si quieres hacer pruebas o necesitas probar tus componentes, vas a necesitar simular tu solución de state management o probarla dos veces. Así que, tienes pruebas para tu state management y también pruebas que dependen del comportamiento de la tienda en el componente. Y luego, si quieres manejar el almacenamiento local o deshacer/rehacer o cualquier otra funcionalidad que sea más genérica y que se aplique a cualquier tienda, cualquier solución de state management, vas a tener que implementar eso por ti mismo, mientras que si tienes una tienda, todas estas cosas vienen de serie. No necesitas hacer nada. Así que por eso quiero hablarles un poco sobre cómo logramos estas cosas, y cuáles son estas cosas que existen cuando tú

QnA

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

Uso efectivo de useEffect
React Advanced 2022React Advanced 2022
30 min
Uso efectivo de useEffect
Top Content
Today's Talk explores the use of the useEffect hook in React development, covering topics such as fetching data, handling race conditions and cleanup, and optimizing performance. It also discusses the correct use of useEffect in React 18, the distinction between Activity Effects and Action Effects, and the potential misuse of useEffect. The Talk highlights the benefits of using useQuery or SWR for data fetching, the problems with using useEffect for initializing global singletons, and the use of state machines for handling effects. The speaker also recommends exploring the beta React docs and using tools like the stately.ai editor for visualizing state machines.
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.
React Query: ¡Es hora de romper con tu "Estado Global"!
React Summit Remote Edition 2020React Summit Remote Edition 2020
30 min
React Query: ¡Es hora de romper con tu "Estado Global"!
Top Content
Global state management and the challenges of placing server state in global state are discussed. React Query is introduced as a solution for handling asynchronous server state. The Talk demonstrates the process of extracting logic into custom hooks and fixing issues with state and fetching logic. Optimistic updates with mutation are showcased, along with the benefits of using React Query for data fetching and mutations. The future of global state management is discussed, along with user feedback on React Query. The Talk concludes with an invitation to explore React Query for server state management.
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.

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 Kuznetsov
Mikhail Kuznetsov
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
Repensando el Estado del Servidor con React Query
React Summit 2020React Summit 2020
96 min
Repensando el Estado del Servidor con React Query
Top Content
Featured Workshop
Tanner Linsley
Tanner Linsley
La distinción entre el estado del servidor y el estado del cliente en nuestras aplicaciones puede ser un concepto nuevo para algunos, pero es muy importante entenderlo cuando se entrega una experiencia de usuario de primera calidad. El estado del servidor viene con problemas únicos que a menudo se cuelan en nuestras aplicaciones sorpresa como:
- Compartir datos entre aplicaciones- Caché y Persistencia- Deduplicación de Solicitudes- Actualizaciones en segundo plano- Gestión de Datos "Obsoletos"- Paginación y Recuperación Incremental- Memoria y Recolección de Basura- Actualizaciones Optimistas
Los gestores tradicionales de "Estado Global" pretenden que estos desafíos no existen y esto finalmente resulta en que los desarrolladores construyan sus propios intentos sobre la marcha para mitigarlos.
En esta masterclass, construiremos una aplicación que expone estos problemas, nos permite entenderlos mejor, y finalmente los convierte de desafíos a características usando una biblioteca diseñada para gestionar el estado del servidor llamada React Query.
Al final de la masterclass, tendrás una mejor comprensión del estado del servidor, el estado del cliente, la sincronización de datos asíncronos (un bocado, lo sé), y React Query.
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
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.
Gestión del estado en React con Context y Hooks
React Summit Remote Edition 2021React Summit Remote Edition 2021
71 min
Gestión del estado en React con Context y Hooks
WorkshopFree
Roy Derks
Roy Derks
Mucho ha cambiado en el mundo de la gestión del estado en React en los últimos años. Donde Redux solía ser la principal biblioteca para esto, la introducción de las API de Contexto y Hooks de React ha revolucionado las cosas. Ya no necesitas bibliotecas externas para manejar tanto el estado del componente como el estado global en tus aplicaciones. En este masterclass aprenderás los diferentes enfoques para la gestión del estado en la era post-Redux de React, ¡todos basados en Hooks! Y como bonificación, exploraremos dos próximas bibliotecas de gestión del estado en el ecosistema de React.
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