Vue Form Validations con Vest

This ad is not shown to multipass and full ticket holders
JSNation US
JSNation US 2025
November 17 - 20, 2025
New York, US & Online
See JS stars in the US biggest planetarium
Learn More
In partnership with Focus Reactive
Upcoming event
JSNation US 2025
JSNation US 2025
November 17 - 20, 2025. New York, US & Online
Learn more
Bookmark
Rate this content

Los formularios en la web siempre han estado con nosotros, sin embargo, todavía parece que siempre tienes que luchar con ellos para que la validación funcione como planeaste, e incluso con las mejoras significativas que nos brindan las bibliotecas y frameworks modernos, el mantenimiento es en su mayoría un problema.

Vest es una nueva generación de framework de validaciones de formularios. Toma su sintaxis y estilo de frameworks de Unit Testing como mocha o Jest (de ahí el nombre), lo que trae la elegancia y naturaleza declarativa de estos frameworks al mundo de la validación de formularios, reduciendo en gran medida la sobrecarga que conlleva escribir, mantener y reutilizar validaciones en tus aplicaciones JS.

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

FAQ

VEST es un marco de validación de formularios inspirado en bibliotecas de pruebas unitarias como Mocha o Jest, creado por Aviatar, un ingeniero de front-end en Facebook.

VEST utiliza un enfoque similar al de las pruebas unitarias, siendo declarativo y permitiendo describir comportamientos esperados y condiciones de prueba en la validación de formularios, como se hace en las pruebas unitarias.

VEST está diseñado para ser utilizado en aplicaciones web, en particular se demostró su uso en aplicaciones Vue, aunque puede adaptarse a otros frameworks sin problemas.

VEST permite una estructura clara y reutilizable para las validaciones, apoyándose en patrones de pruebas unitarias que facilitan la escritura y mantenimiento del código. Además, es independiente de la lógica de UI y puede ser utilizado en múltiples contextos y frameworks.

Sí, VEST permite realizar validaciones asíncronas, como verificar si un nombre de usuario ya está en uso, mediante el uso de promesas o funciones asíncronas dentro de las suites de validación.

VEST por sí mismo no soporta validaciones de tipo de archivo directamente debido a su naturaleza genérica y flexible, pero permite extender sus funcionalidades con bibliotecas externas que sí manejen este tipo de validaciones.

Sí, VEST puede integrarse con Nuxt, Vuex y otras bibliotecas ya que es un marco versátil que funciona independientemente del framework utilizado, facilitando su integración en diferentes entornos de desarrollo.

Evyatar Alush
Evyatar Alush
21 min
20 Oct, 2021

Comments

Sign in or register to post your comment.
Video Summary and Transcription
VEST es un framework de validación de formularios inspirado en bibliotecas de unit testing. Proporciona un enfoque estructurado para la validación de formularios, facilitando el mantenimiento y la reutilización. VEST admite múltiples validaciones por campo, validaciones de advertencia, validación de campos interdependientes, validaciones asíncronas y memoización. Es ligero y se puede integrar con varios frameworks y bibliotecas. El orador está abierto a la colaboración y contribuciones para agregar una interfaz reactiva utilizando el modelo de reactividad de VUE.
Available in English: Vue Form Validations with Vest

1. Introduction to VEST and the Motivation Behind It

Short description:

Soy Aviatar, un ingeniero de front-end en Facebook y el autor de VEST, un marco de validación de formularios inspirado en bibliotecas de pruebas unitarias. Hoy, te mostraré cómo VEST puede mejorar las validaciones de formularios en aplicaciones de Vue. Antes de profundizar en VEST, permíteme explicar la motivación detrás de él. Anteriormente, luchaba con la falta de estructura al agregar validaciones a los formularios. Esto hacía que el mantenimiento y la reutilización fueran difíciles. Inspirado por las pruebas unitarias, desarrollé una estructura para la validación de formularios que permite una fácil descripción del comportamiento deseado y flexibilidad para diferentes características. Vamos a explorar esta estructura con un ejemplo validando el campo de nombre de usuario.

¡Hola! Soy Aviatar. Soy un ingeniero de front-end en Facebook, y soy el autor de VEST. VEST es un marco de validación de formularios inspirado en bibliotecas de pruebas unitarias como Mocha o Jest. Entonces, si has hecho incluso un poco de pruebas unitarias en tu carrera, creo que te sentirás muy a gusto trabajando con VEST.

Hoy, quiero mostrarte cómo podemos usar VEST para mejorar la forma en que escribimos validaciones de formularios en nuestras aplicaciones de Vue. Pero antes de comenzar a hablar sobre VEST en sí, quiero mencionar un poco la motivación detrás de VEST y qué me llevó a escribir VEST para empezar.

En mi experiencia escribiendo formularios y construyendo formularios antes de usar VEST, tenía un gran problema de falta de estructura. Entonces, estaba tratando de agregar validaciones al formulario, y no estaba seguro de dónde debería poner la lógica de validación. ¿Debería ponerlas dentro de un manejador de cambios? ¿Debería ponerlas en algún lugar de mi característica en una biblioteca compartida? ¿Cómo lo escribo? ¿Cómo evito que sea demasiado específico para mi característica? Y no hay una estructura específica que las validaciones deban seguir.

Así que terminé haciéndolo funcionar escribiéndolo en algún lugar entre mis manejadores y mi característica. Pero luego, cuando quería hacer cambios y mantener la característica, como agregar más campos en la característica, o hacer que los campos dependieran unos de otros o incluso eliminar un campo, era muy, muy difícil porque todo estaba atado a la característica. Y porque todo es muy específico para la característica, también era muy difícil reutilizarlo. Así que para tomarlo y usarlo en un formulario diferente o una característica diferente, como el campo de contraseña tanto en restablecer contraseña como en iniciar sesión.

Así que todo esto me llevó a pensar en una solución. Y hace un par de años, cuando estaba trabajando con un empleador anterior, acabábamos de comenzar a escribir pruebas unitarias para nuestras aplicaciones. Y vi que los patrones que tienen las pruebas unitarias, que tenemos esa suite de pruebas con describe y expect. Y se veía muy similar a la forma en que estaba pensando sobre la validación de formularios en mi mente. Porque las pruebas unitarias son declarativas por naturaleza, por lo que puedes describir exactamente lo que quieres que suceda. Y junto con eso, son muy buenas para expresar lo que hay en comparación con cómo debería ser. Así que pones una función en una prueba, y lo mismo ocurre con la validación de formularios.

Así que quiero que mis valores, mis datos, pasen por algunas pruebas. Y todo parece muy relevante para el mundo de la validación de formularios. Por supuesto, no es exactamente lo mismo, y la terminología es diferente, y no ejecutamos pruebas unitarias en producción. Pero con algunos ajustes de diseño, pude idear algo que aún es muy similar a la forma en que escribimos pruebas unitarias, y sigue siendo muy relevante para la validación de formularios. Y la estructura que ideé es esta. Primero creamos una suite que está separada de nuestro código de características, y le añadimos un callback. Dentro del callback, añadimos nuestras pruebas, similar a las pruebas unitarias, con un campo adicional o un parámetro adicional, que es el nombre del campo que estamos validando. Así que en este caso tenemos test, y estamos probando ese nombre de usuario. Y luego tenemos el error que el usuario recibirá en caso de un fallo de validación. Así que el nombre de usuario debe tener al menos tres caracteres.

2. Using VEST with a Real Live Vue App

Short description:

Dentro del callback de esa prueba, tenemos nuestras afirmaciones. Quiero mostrarte cómo funciona con una aplicación Vue real en vivo. Esta es nuestra aplicación, una aplicación básica sin ninguna validación aún. Agregué componentes de entrada para el estilo, nombres de clase para error, advertencia y éxito, props para errores y advertencias, un spinner de carga y una función de validación vacía. Vamos a crear nuestra suite e importar create de vest.

Y dentro del callback de esa prueba, tenemos nuestras afirmaciones. Así que similar a assert o expect, hacemos cumplir que data.username es más largo que dos, o cualquier validación que tengamos allí. Y quiero mostrarte cómo funciona con una aplicación Vue real en vivo.

Solo nota, estoy usando aquí, la API de opciones, pero podría funcionar con la API de composición igual de bien. Sin cambios en absoluto al mejor código.

Así que esta es nuestra aplicación. Es una aplicación muy básica sin ninguna validación en absoluto aún. Y agregué algunos componentes de entrada que están allí solo para el estilo. Agregué algunos nombres de clase. Así que agregué un nombre de clase para error. Lo convierte en rojo. Déjame solo refrescar. Bien, lo convierte en rojo. Agregué un nombre de clase para advertencia. Eso lo convierte en naranja y uno para éxito. Eso lo convierte en verde. Y junto con eso, también agregué algunos props. Así que uno para errores. Y toma un array de strings. Y cuando se muestra, muestra el error en el campo. Y lo mismo para advertencias. También agregué un spinner de carga, porque vamos a hacer algunas validaciones asíncronas más adelante en el camino. Así que loading true. Y vamos a ver un spinner. Así que eso es todo lo que ya tenemos aquí. También tenemos la función de validación, que está vacía. Toma el nombre y el valor del campo que estamos validando. Y vamos a crear nuestra suite. Así que source. Y vamos a importar create de vest.

3. Using VEST for Form Validation

Short description:

Crearé una suite usando la función create y la almacenaré en la constante 'suite'. Luego, importaré esta suite en mi formulario y la usaré dentro de la función validate. El resultado de la validación se almacenará en la variable 'res' y se actualizará cada vez que haya un cambio en la función validate. Ahora, escribamos nuestra primera prueba para el campo de nombre de usuario, verificando que sea obligatorio. También escribiremos pruebas para el campo de contraseña, especificando los requisitos de longitud mínima. Cuando actualicemos y comencemos a escribir, veremos los mensajes de validación para ambos campos.

Y haré const suite equals create. Y exportaré por defecto esa suite. Así que export default suite. Ahora importa esta suite en mi formulario. Así que import suite from suite. Y la usaré dentro de mi función validate. Así que suite, y la llamaré. Ahora almacenaré el resultado de la validación en nuestros datos. Así que res equals suite.get. Y también la actualizaré cada vez que haya un cambio en la función validate. Así que this.res equals el resultado de suite. Y tomemos el valor y el nombre y también pasemos el this.input. Así que pasemos todo. Y el nombre del campo que estamos validando.

De vuelta a la suite, escribamos nuestra primera prueba. Así que primero tomemos los datos, que están vacíos en este momento. Y tomemos test y enforce. Ahora escribir la primera prueba es muy simple. Probemos que username y digamos que si falla, el usuario dirá que el nombre de usuario es obligatorio. Y luego enforce que data.username no esté vacío. Si vuelvo al formulario y ya tengo esto aquí, solo iré al input y haré errors equals y luego res.getErrors o el campo username. Y si empiezo a escribir y luego elimino todo, veré que el nombre de usuario es obligatorio. Que es lo que escribimos.

Dupliquemos esto para password también y vamos a escribir el resto de nuestra prueba. Así que otra para username y podemos tener múltiples pruebas para el mismo campo y no tienen que estar en la misma función, lo que hace que sea muy fácil entender lo que está pasando. Así que username debe tener al menos tres caracteres de longitud, más de dos. Hagamos lo mismo para password.

4. Improving Validation and Styling

Short description:

El campo de contraseña comienza a iluminarse cada vez que escribo dentro de username, pero queremos que solo se active para sí mismo. Podemos lograr esto usando la función 'only' para especificar los campos que queremos validar. Además, podemos usar la utilidad 'class names' para estilizar nuestra aplicación según el estado de validación. Por ejemplo, podemos establecer los nombres de clase como 'success' para entradas válidas, 'error' para entradas no válidas y 'warning' para entradas con advertencias. Esto nos permite proporcionar retroalimentación visual al usuario. También podemos usar la función 'warn' para manejar validaciones de advertencia, como notificar al usuario sobre contraseñas débiles sin bloquear el envío del formulario.

Ahora, si lo notaste, el campo de contraseña comienza a iluminarse cada vez que escribo dentro de username, lo cual no es el resultado esperado. En realidad, queremos que solo se active para sí mismo. Y esto es realmente fácil. Simplemente importemos only y only nos permite especificar los campos que queremos validar en cualquier momento dado. Así que ejecutemos only. Y recuerda, estamos pasando el nombre del campo que estamos validando a la suite. Podemos tomarlo aquí, campo actual, y pasarlo a only. Y ahora, cada vez que escribo dentro de cualquiera de los campos, solo se iluminará.

Ahora agreguemos algo de color. Vest no es un marco de UI, pero te da algunas utilidades de UI, para que puedas estilizar tu aplicación. Hagamos import class names desde vest class names. Y lo que hace la utilidad class names es que te da la capacidad de especificar qué nombres de clase deben aparecer en qué estado de validación. Así que haré un valor calculado, y usaré... Y devolveré class names y le pasaré el resultado de la validación. Y también las clases que quiero que aparezcan en cualquier etapa. Así que si es válido, quiero que sea success. Y si es no válido, quiero que sea error. Y si es warning, quiero que sea warning. Así que ahora puedo tomar los class names y ponerlo en la clase. Así que class equals CN, esa es nuestra propiedad, con el campo Username. Y si empiezo a escribir, veremos que es rojo y luego es verde. Así que hagamos lo mismo para Password. Y esto está sucediendo igual.

Ahora, ¿qué pasa si queremos algunos campos de advertencia? Así que, por ejemplo, la fuerza de la contraseña no debería bloquear el envío del formulario, pero debería notificar al usuario que hay un problema. Hagámoslo. Tenemos la función de validaciones de advertencia. Solo tenemos que llamar a la función warn de Vest. Así que probemos la contraseña. Y digamos que es débil, que no tiene números. La contraseña es débil.

5. Using VEST for Advanced Validations

Short description:

Tal vez añade un número y hagamos Matches, que toma una expresión regular. Y hagamos, tiene del 0 al 9. Y ahora, todo lo que tengo que hacer es simplemente añadir warn a esto, lo que indica que este es un campo de advertencia. A veces también queremos tener validaciones async. Por ejemplo, si el username ya está tomado, queremos verificar eso en lugar de dejar que el usuario envíe y solo entonces decírselo. Tengamos una función mock que implemente una lógica de does user exist. Y todo lo que tenemos que hacer ahora es escribir un test que devuelva does user exist. Ahora, si empiezo a escribir aquí, algún usuario, notarás que no pasa nada. Y esto es porque best necesita informar de vuelta al formulario que la validación se completó. Así que todo lo que tenemos que hacer y tal vez primero añadamos un spinner. Así que sabemos qué está pasando, añadamos una nueva propiedad de datos. Así que username loading es igual a false. Este es el valor por defecto. Y ahora hagamos si name, así que si el campo que estamos validando es username, hagamos que this dot username is loading sea igual a true.

Tal vez añade un número y hagamos Matches, que toma una expresión regular. Y hagamos, tiene del 0 al 9. Y ahora, todo lo que tengo que hacer es simplemente añadir warn a esto, lo que indica que este es un campo de advertencia. Y mientras escribo, verás que después de cinco caracteres, se vuelve naranja, pero no estamos viendo el mensaje de validación. Y esto es porque solo estamos tomando los errores de validación. Así que tenemos que duplicar esto y decir, Get Warnings.

Y si empiezo a escribir ahora, Password is weak. Tal vez añade un número. Cool. A veces también queremos tener validaciones async. Por ejemplo, si el username ya está tomado, queremos verificar eso en lugar de dejar que el usuario envíe y solo entonces decírselo. Y todo lo que tenemos que hacer en VEST es simplemente devolver una promesa o un test async dentro de nuestra suite.

Así que simplemente lo haré. Tengamos una función mock que implemente una lógica de does user exist. Así que async function does user exist. Toma un username. Y si el username es igual a algún usuario, deberíamos lanzar un error, throw new error. Y también hagamos que espere un segundo, obtendré el paquete npm wait. Así que a wait, wait for one second. Y todo lo que tengo que hacer ahora es escribir un test que devuelva does user exist. Así que test username, username already taken. Y solo necesito devolver does user exist y llamarlo con data dot username. Ahora, si empiezo a escribir aquí, algún usuario, notarás que no pasa nada. Y esto es porque best necesita informar de vuelta al formulario que la validación se completó. Y aquí está esperando un segundo. Así que todo lo que tenemos que hacer y tal vez primero añadamos un spinner. Así que sabemos qué está pasando, añadamos una nueva propiedad de datos. Así que username loading es igual a false. Este es el valor por defecto. Y ahora hagamos si name, así que si el campo que estamos validando es username, hagamos que this dot username is loading sea igual a true.

6. Using VEST for Async Validation

Short description:

Para cancelar el spinner de carga cuando la validación se completa, usa la función 'done' para obtener el resultado de la validación. Establece 'username loading' en false para cancelar el spinner. La validación async se puede implementar usando 'sweet.get' para obtener el resultado actual de la validación. Eso es todo lo que necesitas hacer para la validación async.

Y ahora solo para hacerlo funcionar, hagamos loading igual a his name is loading. Así que solo para ver bien, tenemos el spanner, y ahora necesitamos cancelarlo cuando la validación se complete. Así que hagamos que empecemos done, open this dot res dot done, done es una función que nos da un callback cuando la validación se completa. Y todo lo que tenemos que hacer es this dot res equals sweet dot get nos da el resultado actual de la validación. Y también cancelemos username is loading. Así que these that username loading equals false. Así que ahora si escribo si escribo algún usuario, se supone que obtendremos usernames already taken. Y eso es todo. Eso es todo lo que tienes que hacer para la validación async.

7. Improving Async Validations

Short description:

Pero, por supuesto, se puede mejorar. Podemos decirle a VEST que omita una validación cuando ya está fallando. Al usar la función 'skip when' y especificar los criterios, como que el resultado de la validación tenga errores para el campo username, podemos evitar validaciones async innecesarias. Esto asegura que la validación solo se active cuando sea necesario, mejorando el rendimiento.

Pero, por supuesto, se puede mejorar. Porque si te das cuenta, verás que empiezo a escribir. Aunque la validación está fallando para la validación más corta, por ejemplo, debe tener al menos tres caracteres, todavía estamos mostrando el spinner, lo que significa que todavía estamos yendo al servidor, lo cual no es una gran idea, porque podría ser una validación async muy costosa. Y para evitar eso, podemos simplemente decirle a best que omita una validación según algunos criterios. En este caso, siempre que la validación esté fallando desde el principio. Así que en nuestro caso, usemos skip when. Y nos permite decir cuándo queremos omitir algo y estamos tomando un skip when y nuestro criterio es el sweet dot GET, que nos da el resultado de la validación tiene errores para username. Así que siempre que username esté fallando, no ejecutes lo que sea que esté dentro de ese callback. Y si hago esto, OK, intentemos escribir algo. E, A, sin spinner, L, hay un spinner, por lo que no estamos validando la validación async antes de que esté lista.

8. Handling Costly Validations with Memoization

Short description:

Ahora hagamos un usuario de nuevo y es correcto, pero ahora estoy agregando otro carácter y fuimos al servidor y ahora es válido y lo quitaré. Y fuimos al servidor de nuevo, aunque sabemos que la validación ya está fallando porque ya la hemos visto fallar para el mismo usuario. Nuevamente, podría ser una validación costosa y podemos manejarla con memoization dentro de VEST. Y todo lo que tenemos que hacer es tomar nuestro test y hacer test.memo y luego simplemente agregar nuestras dependencias. Así que en nuestro caso, queremos memoizarlo por el username, así que data.username. Así que mientras el username no cambie o mientras el username se repita, la validación nos dará inmediatamente la misma respuesta sin ir al servidor. Y este es el ejemplo. Así que algún usuario, vamos al servidor, estoy agregando un carácter, y si lo quito, verás que obtuvimos una respuesta inmediata. Y ahora verás que el formulario es válido, todo está bien, solo quiero agregar una cosa más. Quiero deshabilitar el envío antes de que el formulario sea completamente válido. Y esto es fácil de hacer, todo lo que tenemos que hacer es ir a nuestro template nuevamente, y luego agregar disable a nuestro botón de submit, y decir que queremos deshabilitar cuando res no es válido, así que no res es válido. Y déjame ver, oh, deshabilitado, está bien. Y ahora está deshabilitado, y si escribo algo, algún usuario uno, perfecto, y password, example uno, y solo nota que la advertencia no impide el envío del formulario, una advertencia no calificada como inválida, que es justo lo que buscamos. Y así, dentro de, creo, seis líneas de lógica dentro de Vue, pudimos validar este formulario completamente con muchas, muchas validaciones complejas, lo cual es bastante impresionante, creo.

Ahora hagamos un usuario de nuevo y es correcto, pero ahora estoy agregando otro carácter y fuimos al servidor y ahora es válido y lo quitaré. Y fuimos al servidor de nuevo, aunque sabemos que la validación ya está fallando porque ya la hemos visto fallar para el mismo usuario. Nuevamente, podría ser una validación costosa y podemos manejarla con memoization dentro de VEST. Y todo lo que tenemos que hacer es tomar nuestro test y hacer test.memo y luego simplemente agregar nuestras dependencias. Así que en nuestro caso, queremos memoizarlo por el username, así que data.username. Así que mientras el username no cambie o mientras el username se repita, la validación nos dará inmediatamente la misma respuesta sin ir al servidor. Y este es el ejemplo. Así que algún usuario, vamos al servidor, estoy agregando un carácter, y si lo quito, verás que obtuvimos una respuesta inmediata. Y ahora verás que el formulario es válido, todo está bien, solo quiero agregar una cosa más. Quiero deshabilitar el envío antes de que el formulario sea completamente válido. Y esto es fácil de hacer, todo lo que tenemos que hacer es ir a nuestro template nuevamente, y luego agregar disable a nuestro botón de submit, y decir que queremos deshabilitar cuando res no es válido, así que no res es válido. Y déjame ver, oh, deshabilitado, está bien. Y ahora está deshabilitado, y si escribo algo, algún usuario uno, perfecto, y password, example uno, y solo nota que la advertencia no impide el envío del formulario, una advertencia no calificada como inválida, que es justo lo que buscamos. Y así, dentro de, creo, seis líneas de lógica dentro de Vue, pudimos validar este formulario completamente con muchas, muchas validaciones complejas, lo cual es bastante impresionante, creo.

9. Features and Benefits of VEST

Short description:

VEST tiene varias características, incluyendo la validación de campos cambiados tras la interacción, múltiples validaciones por campo, validaciones de advertencia, validación de campos interdependientes, validaciones asíncronas, memoización y validaciones estructuradas. A pesar de su complejidad, VEST es ligero, menos de seis kilobytes cuando está mini-zipped, lo que lo convierte en uno de los frameworks de validación más pequeños y potentes disponibles.

Y, hemos visto algunas de las características que VEST tiene, pero no todas. Hay algunas más, y hay validación de campos cambiados tras la interacción, lo cual hemos hecho. Múltiples validaciones por campo, validaciones de advertencia. Podemos tener validación de campos interdependientes, por lo que podemos tener tests que dependen uno del otro. Tenemos validaciones asíncronas, y también podemos memoizarlas. Podemos agrupar tests y anidar tests dentro de grupos, por ejemplo, cuando tenemos un formulario de varios pasos. Entonces, en general, tenemos validaciones estructuradas. Estas son algunas de las características de VEST, pero no todas. Incluso con todas esas características y toda esta complejidad, VEST sigue siendo menos de seis kilobytes cuando está mini-zipped. Creo que esto hace que VEST sea uno de los frameworks de validación más pequeños y potentes que existen.

QnA

Excitement, Questions, and Integration

Short description:

Estoy realmente emocionado trabajando con VEST. Disfruto escribiendo validaciones de formularios con VEST. Si estás emocionado con VEST hoy, no dudes en contactarme en Twitter, o incluso ir a la página de GitHub, o incluso enviar un PR, mejorando la documentación para Vue, o incluso mejorando y agregando algo de código. Muchas gracias por acompañarme hoy. Pasemos a algunas preguntas. Primera pregunta, ¿cómo maneja la API la lógica de validación asíncrona? Por ejemplo, la validación depende de alguna otra API asíncrona como solicitudes HTTP. Simplemente pasas una función asíncrona o devuelves una promesa. Si esa función rechaza o lanza un error, entonces una validación falla. Siguiente pregunta, ¿VEST soporta la validación de esquemas JSON o tiene integración con validadores de esquemas JSON, como AJV? VEST no es una biblioteca de validación de esquemas, pero se integra con cualquier cosa. Enforce, la función de aserción dentro de VEST, tiene funciones de validación de esquemas muy extensas.

Estoy realmente emocionado trabajando con VEST. Disfruto escribiendo validaciones de formularios con VEST. Te agradezco por acompañarme hoy. Si estás emocionado con VEST hoy, no dudes en contactarme en Twitter, o incluso ir a la página de GitHub, o incluso enviar un PR, mejorando la documentación para Vue, o incluso mejorando y agregando algo de código. Realmente lo aprecio. Muchas gracias por acompañarme hoy. Que tengas un gran día.

Pero primero, veamos los resultados de la pregunta de la encuesta que hizo, que fue sobre nuestro consumo de café. Parece que todos nosotros, o la gran mayoría de nosotros, tenemos un problema de cafeína, yo incluido. Creo que Amitar y yo tuvimos la misma respuesta. Si te gustaría compartir cuál es nuestro problema. Sí. Así que, no se trataba de tu problema de cafeína. Se trataba de mi problema de cafeína, solo para aclarar. Y sí, mi opción fue la tercera, mientras que seguro, bebo café, definitivamente. Así que sí, solo estaba tratando de sentirme cómodo con mi consumo, para dejarlo claro. Bueno, estás en buena compañía porque soy buena compañía y eso es lo que importa.

Bien, pasemos a algunas preguntas. Primera pregunta, lo siento. No quiero destrozar tu nombre, pero tus iniciales son J H. ¿Cómo maneja la API la lógica de validación asíncrona? Por ejemplo, la validación depende de alguna otra API asíncrona como solicitudes HTTP. Así que esto es algo que mostré en mi presentación. La pregunta probablemente se hizo antes de esa parte. Y todo lo que tienes que hacer es simplemente pasar, en lugar de solo pasar una función de validación, simplemente pasas una función asíncrona o devuelves una promesa. Y si esa función rechaza o lanza un error, entonces una validación falla y funciona exactamente igual que con cualquier otra validación síncrona. Genial. Bien, siguiente pregunta de Saffity. Lo siento si estoy destrozando nombres, realmente lo siento. ¿VEST soporta la validación de esquemas JSON o tiene integración con validadores de esquemas JSON, como AJV? Así que VEST, como concepto general, no es una biblioteca de validación de esquemas, aunque se integra con cualquier cosa. Y solo como una nota rápida, Enforce, la función de aserción dentro de VEST, tiene funciones de validación de esquemas muy extensas.

Uso de Patrones de Prueba y Desafíos al Escribir VEST

Short description:

La forma recomendada de validar formularios es a través de diferentes pruebas para cada campo. Las validaciones de esquemas también pueden usarse en las pruebas. Escribir VEST fue un desafío ya que requirió adaptar patrones de un mundo diferente. Las pruebas unitarias son sin estado, por lo que se implementó un estado interno en VEST para retener los resultados de validación para cada campo.

No es la forma más recomendada porque la forma en que creo que los formularios deberían validarse es a través de diferentes pruebas para cada campo, pero estas son compatibles. Y si estás usando validaciones de esquemas en tus formularios, entonces sí, por supuesto que puedes usar las mismas validaciones de esquemas dentro de tu prueba. Así que mientras lance un error o devuelva un booleano, puedes ponerlo dentro de tu prueba de validación.

Genial. La siguiente pregunta de Organized Chaos. Me gustan las personas que tienen palabras normales. De todos modos, la pregunta es, muy interesante usar patrones de prueba para la validación de formularios. Parece bastante factible. ¿Has encontrado algún inconveniente al escribir las pruebas u otros escollos? Sí, muchos de ellos. Así que, escribir VEST no fue simple porque estaba tratando de tomar algunos patrones que vienen de un mundo completamente diferente al mundo de la validación de formularios. Y los principales problemas que enfrentaba es que las pruebas unitarias son básicamente sin estado. Así que cada vez que las ejecutas, todo el estado se genera una y otra vez. Y lo que tuve que hacer para que VEST realmente valiera la pena y no solo desperdiciara tu tiempo gestionando tu propio estado es tener un estado interno que retenga los resultados de validación para cada uno de los campos que se validan. Y luego solo tienes que hacer la parte agradable de escribir las validaciones personalizadas.

Integration with Nuxt, Beautify, and Vuex

Short description:

VEST es un framework versátil que puede integrarse con cualquier framework o biblioteca, como Nuxt, Beautify y Vuex. Toma una entrada, devuelve un resultado de validación y puede usarse en varios contextos. Migra tus validaciones sin cambiar tu código para integrarte con un framework específico.

Okay. La siguiente pregunta es de Anonymousio. Uso Nuxt, Beautify y Jest. Si uso BEST, ¿qué tal la integración de Nuxt, Beautify y Vuex y todas las bibliotecas? Vaya, eso fue mucho nombre dropping. Nuxt, Beautify y Vuex, y todas las bibliotecas. Mm-hm. Y todas ellas. En realidad, debido a que VEST es un framework que toma un valor, toma una entrada y devuelve un resultado de validación, puedes integrarlo con cualquier cosa y no está intencionalmente atado a un framework específico o a una biblioteca específica, por lo que es muy versátil y puedes usarlo en muchos conceptos y aspectos diferentes y en muchos contextos diferentes. Así que puedes usarlo con Nuxt, sin Nuxt, o puedes usarlo con Vuex, o si estás viniendo de React, puedes simplemente migrar tus validaciones y no tener que cambiar cosas solo para integrarte con un framework específico.

VEST Support for File Type Validation

Short description:

VEST no admite la validación de tipos de archivo u otras validaciones específicas de negocio. Evita la sobrecarga y permite a los usuarios tomar sus propias decisiones respecto a estas validaciones. Sin embargo, VEST proporciona la flexibilidad para extender sus afirmaciones con frameworks y bibliotecas personalizadas, permitiendo la integración con soluciones existentes de validación de tipos de archivo.

Bien, y de hecho tenemos una pregunta de nuestro maravilloso moderador de preguntas hoy, así que un saludo a todo el arduo trabajo de... Voy a destrozar esto. Lo siento mucho. Pero la pregunta es, ¿VEST admite la validación de tipos de archivo o planean aplicarla? Oh, sí, esa es buena. Y esto es algo que he visto en muchos otros frameworks también o bibliotecas para validación, y típicamente, algunos de ellos lo hacen, pero típicamente no admiten algún tipo de validaciones. VEST es uno de ellos, de los frameworks que no admiten estas validaciones. Y es cierto para la validación de tipos de archivo o cualquier validación de medición de archivo, es cierto para la validación de correo electrónico, y es cierto para algunas otras. Y la razón es que estas son muy centradas en el negocio y específicas del negocio. Y cada vez que intentas validar algo que es específico de cualquier tamaño de archivo, cualquier tipo de archivo, VEST tendría que conocer mucho de tu negocio para simplemente tomar esas decisiones si es válido o no. E incluso si no, tendría que venir con mucha sobrecarga que muchos usuarios no necesitarían. Lo mismo para el correo electrónico. He estado en lugares donde, por ejemplo, no se permiten alias de correo electrónico, como el más después de tu nombre de usuario, y algunos lugares donde solo se permite para las direcciones de correo electrónico de la propia empresa. Y VEST no puede saber esto. Así que te da las decisiones para tomar respecto a validaciones específicas de negocio. Y lo bueno de VEST es que las afirmaciones se pueden extender con frameworks personalizados y bibliotecas personalizadas. Así que, por ejemplo, si usas una biblioteca que ya maneja la validación de tipos de archivo, puedes simplemente hacer enforce dot extend, y darle esa entrada, y funcionará como cualquier otra validación dentro de VEST. Muy bien.

VEST's Reactive Interface and Collaboration

Short description:

VEST actualmente tiene una interfaz funcional, pero estoy interesado en agregar una interfaz reactiva que funcione con el modelo de reactividad de VUE. Agradecería las contribuciones y la colaboración de la comunidad en esto. Si tienes conocimiento o interés en el modelo de reactividad de VUE, conectémonos y trabajemos juntos.

Bien. La siguiente pregunta es que VEST tiene una interfaz funcional, y usualmente cuando se trabaja con VUE se espera que las cosas sean más reactivas. ¿Tiene VEST una interfaz reactiva? Oh, genial. Así que solo tengo que decir que vengo de un fondo de React originalmente, y creo que una de las cosas más agradables de VUE es su modelo de reactividad. Creo que es realmente agradable cómo las cosas se actualizan y cómo funcionan de esta manera. La verdad es que quiero agregar una interfaz reactiva a VEST. Pero requiere bastante investigación, y creo que es algo que VEST debería tener, o al menos un puente, que funcione con el modelo de reactividad de VUE. Esto es algo para lo que me encantaría tener algunas contribuciones de la comunidad. Así que si sabes algo sobre el modelo de reactividad de VUE, o si solo quieres aprender sobre y colaborar en ello, estoy dispuesto. Creo que esta es definitivamente la audiencia adecuada para eso.

Clearing Validation Cache in VEST

Short description:

VEST proporciona múltiples formas de limpiar la caché de validación, incluyendo descartar el suite y generar uno nuevo, usar la función suite.reset para borrar todo el estado, o usar la función suite.remove para eliminar un campo específico. Estas opciones rara vez son necesarias, pero ofrecen flexibilidad cuando se requieren.

Otra pregunta de OrganizedChaos, mencionaste que llevas un seguimiento del estado interno de VEST. ¿Has expuesto formas de borrar eso programáticamente? Sí. Bien, lo haré un poco más largo. Así que VEST tiene múltiples formas de limpiar la caché de validación. Una es que puedes simplemente descartar el suite y generar uno nuevo, y obtendrás un estado limpio. Así que solo crea un nuevo suite. Las otras dos formas son básicamente, puedes hacer suite.reset, esta es una función que cuando la llamas, todo el estado se borra. Y la otra, si por ejemplo, quieres eliminar un campo específico en caso de que tengas validaciones dinámicas, como que el usuario agregó algún elemento y ahora tienes que ejecutar validaciones sobre él, y luego el usuario lo eliminó, entonces puedes hacer suite.remove y especificar el nombre del campo que quieres eliminar, y entonces solo ese campo se elimina. Usualmente no tienes que hacer ninguna de esas, pero a veces sí. Y cuando lo haces, tienes tanto reset como remove.

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

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.
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
Workshop
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
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 Pinia desde cero
Vue.js Live 2024Vue.js Live 2024
70 min
Construyendo Pinia desde cero
Workshop
Eduardo San Martin Morote
Eduardo San Martin Morote
Sumergámonos en cómo funciona Pinia bajo el capó construyendo nuestro propio `defineStore()`. Durante este masterclass cubriremos algunos conceptos avanzados de Vue como la inyección de dependencias y los scopes de efectos. Esto te dará una mejor comprensión de la API de Composición de Vue.js y Pinia. Requisitos: experiencia en la construcción de aplicaciones con Vue y su API de Composición.