Структура проверки формы Javascript: Запрос на пересмотр

Я не был уверен, смогу ли я задать такой вопрос, но после просмотра этого на Meta Stackoverflow это выглядит так этот вопрос в порядке. Хорошо, на мой вопрос:

Несколько месяцев назад я написал рамки проверки в Javascript. Я знаю, что уже существуют рамки валидации, такие как jQuery Validation , но я хотел использовать другой подход к валидации. Современные подходы имеют дело с написанием кода Javascript для выполнения проверки элементов формы. Глядя на исходный код формы, не сразу видно, какая проверка происходит для каждого элемента. В некоторой степени это можно исправить с помощью CSS-классов, которые определяют различные виды проверки. Но я чувствовал, что даже это было ограничено, потому что вы не можете легко настроить поведение проверки (сообщения об ошибках и т. Д.). Я хотел сделать что-то вроде проверки на основе аннотаций в Java с использованием JSR-303 Bean Validation или Hibernate Validator .

Поскольку HTML5 позволяет добавлять пользовательские атрибуты к элементам, я решил, что могу использовать это для «аннотирования» элементов формы для проверки. Итак, по сути, я придумал это:


Имея в виду эту основную идею, я создал инфраструктуру Javascript, которая:

  • Изучает DOM для элементов, для которых определены ограничения, и связывает эти ограничения с элементами
  • Позволяет создание пользовательских ограничений
  • Позволяет программно связывать ограничения
  • Проверяет связанные ограничения

Кроме того, платформа имеет следующие особенности:

  • Группы проверки, аналогичные тем, которые указаны в JSR-303
  • Интерполяция для сообщений об ошибках

После того, как я создал свой фреймворк, я попытался получить отзывы и рецензии на него, но я не был уверен, куда идти, чтобы получить отзывы и рецензии. Я написал об этом несколько постов в блоге и без особой удачи разместил их в Digg и Reddit (раздел программирования). Некоторым людям это показалось интересным, но я не получил ничего большего.

Недавно на моем рабочем месте мы модернизировали устаревшую кодовую базу (JSP и сервлеты) и перенесли ее в Spring MVC. Когда начался разговор о валидации, я передал свои рамки своему старшему архитектору. Я сделал небольшую интеграцию и проверку концепции, и они, казалось, заинтересовались и дали мне добро, чтобы добавить его в проект. До сих пор у меня было только мое собственное скромное мнение, что это был бы полезный способ проверки, так что это дало мне некоторую уверенность в том, что моя идея и структура могут иметь некоторые достоинства. Однако мне все еще нужно было больше участия и рамок. После того, как я понял, что Stackoverflow разрешает подобные вопросы, Я решил опубликовать его здесь, чтобы получить конструктивную критику, комментарии и отзывы.

Поэтому без дальнейших задержек я хотел бы представить Regula . Ссылка, которую я предоставил, идет в вики на GitHub, где есть вся документация для фреймворка. Вы можете скачать последнюю версию (v1.1.0) с здесь .

Ждем ваших комментариев.

Некоторая дополнительная информация, которая не имеет непосредственного отношения к делу

Я играл с идеей интеграция моей инфраструктуры с Spring, то есть перевод аннотаций валидации на bean-компонентах в валидацию на стороне клиента. Недавно мне удалось заставить это работать, даже с группами проверки (хотя в настоящее время нет поддержки отношений наследования между группами на стороне клиента). Сюда, Вы просто должны аннотировать свойства поля с помощью ограничений проверки, и код проверки на стороне клиента генерируется автоматически. Тем не менее, я новичок в Spring, поэтому мой метод, вероятно, не так уж и чист. Я хотел бы также получить некоторую обратную связь по этому вопросу, поэтому, если кто-то заинтересован, пожалуйста, дайте мне знать. В идеале (и я надеюсь, что я не слишком претенциозен), я хотел бы связаться с людьми из Spring и посмотреть, заинтересованы ли они в этом.

14
задан Community 20 March 2017 в 10:29
поделиться

1 ответ

Мне он уже очень нравится, он поддерживает мой html в чистоте, а возможность создавать собственные валидаторы просто великолепна. Одна вещь, которую я добавил, - это короткая рука для привязки функций проверки и отправки и завернута в плагин jQuery:

if (jQuery) {
    (function($)
    {
        $.regula = function(formId, callback) 
        {
            regula.bind();

            $("#" + formId).submit(function() 
            {
                var validationResults = regula.validate();

                if (validationResults.length > 0)
                {
                    if (callback)
                        callback(validationResults);

                    return false;
                }

                return true;
            });
        };
    })(jQuery);
}

На самом деле, я только что написал об этом в блоге , так как я очень впечатлен насколько это чисто и просто. Я все еще собираюсь потратить время на изучение вашего исходного кода, чтобы увидеть, как вы его достигли, но это отличное начало :)

Что касается интеграции вашего фреймворка, я работаю в основном с ASP.NET MVC, и это было бы Интересно посмотреть, как он преобразует логику проверки на стороне сервера в ограничения на стороне клиента. Кое-что, что я могу посмотреть в следующем месяце или около того.

7
ответ дан 1 December 2019 в 16:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: