No estaba seguro de poder hacer este tipo de pregunta, pero después de ver this en Meta Stackoverflow, parece que este tipo de pregunta está bien. Bueno, en mi pregunta:Marco de validación de formularios de Javascript: solicitud de revisión
Hace unos meses escribí un marco de validación en Javascript. Sé que ya existen marcos de validación como jQuery Validation, pero quería adoptar un enfoque diferente para la validación. Los enfoques actuales se refieren a la escritura de código JavaScript para realizar la validación de los elementos del formulario. Al observar el código fuente del formulario, no es inmediatamente evidente qué validación ocurre en cada elemento. Hasta cierto punto, esto puede remediarse mediante el uso de clases CSS que especifican diferentes tipos de validación. Pero sentí que incluso esto era limitado porque no se puede personalizar fácilmente el comportamiento de la validación (mensajes de error, etc.). Quería hacer algo así como la validación basada en anotaciones en Java usando JSR-303 Bean Validation o Hibernate Validator.
Dado que HTML5 le permite agregar atributos personalizados a un elemento, calculé que podría aprovechar esto para "anotar" elementos de formulario para la validación. Así que, esencialmente, se me ocurrió esto:
<input id = "myInput"
name = "myInput"
type = "text"
class = "regula-validation"
data-constraints = '@NotEmpty @IsNumeric @Between(min=1, max=5)' />
Con esta idea básica en mente, he creado un marco Javascript que:
- examina el DOM de los elementos que tienen limitaciones definidas y se une a estas limitaciones a los elementos
- permite la creación de restricciones personalizadas
- permite programática de unión de las restricciones
- limitaciones valida con destino
Además, el marco tiene las siguientes características:
- grupos de validación, similar al que se especifica en JSR-303
- interpolación para los mensajes de error
Una vez creé mi marco Intenté obtener comentarios y revisarlos, pero no estaba seguro de a dónde ir para obtener comentarios y comentarios. Escribí algunas publicaciones en el blog sobre él y lo publiqué en Digg y Reddit (sección de programación) sin mucha suerte. Algunas personas parecían interesadas, pero no obtuve mucho más que eso.
Recientemente, en mi lugar de trabajo hemos estado modernizando una base de código heredada (JSP y servlets) y moviéndola a Spring MVC. Cuando surgió la conversación de validación, lancé mi marco a mi arquitecto principal. Hice un poco de integración y prueba de concepto y parecían interesados y me dieron el visto bueno para agregarlo al proyecto. Hasta ahora, solo tenía mi propia humilde opinión de que esta sería una forma útil de hacer la validación, por lo que esto me dio la confianza de que mi idea y mi marco podrían tener algún mérito. Sin embargo, todavía necesitaba más participación y marco. Después de darme cuenta de que Stackoverflow permite este tipo de preguntas, decidí publicarlo aquí para obtener críticas constructivas, comentarios y comentarios.
Así que sin más demora, me gustaría presentar Regula. El enlace que he proporcionado va a una wiki en GitHub que tiene toda la documentación para el marco. Puede descargar la última versión (v1.1.0) desde here.
Esperamos sus comentarios.
Parte de la información adicional que no es inmediatamente relevante
que había jugado con la idea de integrar mi marco con la primavera, es decir, la traducción de las anotaciones de validación de habas en la validación del lado del cliente. Recientemente pude hacer que esto funcione, incluso con grupos de validación (aunque actualmente no hay soporte para las relaciones de herencia entre los grupos en el lado del cliente). De esta manera, simplemente tiene que anotar las propiedades del campo con las restricciones de validación, y el código de validación del lado del cliente se genera automáticamente. Sin embargo, soy un novato de primavera y por lo tanto mi método probablemente no es tan limpio. Me gustaría obtener algunos comentarios sobre esto también, por lo que si alguien está interesado, por favor hágamelo saber. Idealmente (y espero no ser demasiado pretencioso) me gustaría contactar a la gente de Spring y ver si están interesados en esto.
Realmente no tengo un estuche de uso para realmente ejercitarlo; pero votaré y preferiré, ya que parece un buen concepto. Tengo curiosidad de ver lo que las personas hacen de eso. Mi elección de framework web, wicket, elimina la necesidad de la validación de JavaScript, ya que proporciona las facultades para enviar datos y generar comentarios del servidor a través de la solicitud de ajax. Sé que otros marcos, como ASP.NET, alientan la validación del cliente para la retroalimentación dinámica (aunque siempre se necesita validar el servidor al enviar el formulario). – RMorrisey
@RMorrisey ¡Gracias por tu comentario! No he probado wicket, pero me gustaría echarle un vistazo en algún momento. Creo que JSF también hace algo similar a lo que describes. En el trabajo tenemos algo de validación que solo se realiza en el lado del servidor. Con mi marco de trabajo, he podido hacerlo desde el lado del cliente de la manera en que lo describes. Tengo una restricción personalizada con un validador que hace una solicitud de AJAX para realizar la validación. ¡Gracias una vez más por sus comentarios! –
Sé que está fuera de tema y fuera de tiempo para esto, pero ¿cómo inyectó la anotación a las restricciones de datos? Llegué a la pregunta mientras buscaba cómo hacer algo similar (regula es más que suficiente para mis necesidades) –