Механизм правил в JavaScript
Есть ли в JavaScript механизм Rule?
Вопрос в этом контексте:
- Рассмотрим веб-приложение, имеющее форму, которую пользователи заполняют.
- Когда пользователь заполняет каждое поле и переходит к следующему, бизнес-логика, написанная на JavaScript, управляет видимостью (и другими атрибутами) элементов формы далее по странице.
-
Такая же бизнес-логика также применяется на стороне сервера после того, как форма отправляется, хотя и на Java, для защиты от любых сбоев/манипуляций со стороны браузера.
-
Теперь было бы неплохо, если бы у нас был JSR 94/Drools/JRules, такой как механизм правил, который выполнял бы правила как на Java, так и на JavaScript? С таким механизмом правил я могу избежать жесткого кодирования своих правил, а также сохраняю гибкость при наличии на стороне клиента, а также проверки на стороне сервера
(PS: Я пробовал маршрут AJAX и видел, что приложение становится намного менее отзывчивым, что затрудняет продажу пользователям, привыкшим к кодированной, чисто-javascript-версии).
Ответы
Ответ 1
JSR-94 - это спецификация Java, поэтому я не вижу, что она должна делать с браузером.
Там правила Google JSON:
http://code.google.com/p/jsonrules/
Ты сказал, что попробовал маршрут AJAX. Означает ли это, что движок правил работает на сервере и асинхронный вызов для доступа к нему?
Ответ 2
Это правильный вопрос. Из в этой статье, JSR 94
не стандартизирует следующее: Сам механизм правил Поток выполнения правил Язык, используемый для описания правил Механизм развертывания технологии Java EE
Таким образом, может быть возможно использовать DSL, который может быть выполнен на клиенте и сервере, и это можно было бы разработать, выполнить и управлять в соответствии с архитектурой JSR 94. Или нет.
Еще одна статья Создание простого механизма правил с использованием API сценариев Java использует JSR-233 плюс другие материалы для создания системы движков правил. Это, однако, предшествует JSR 94.
Я попал на эту страницу stackoverflow, так как я тоже искал решение. В настоящее время у меня есть страница для проверки на стороне клиента, где группы полей могут инициировать различные правила проверки, а требования меняются. Чтобы написать это в императивном коде, просто создается беспорядок с высокой циклической сложностью.
Однако проще всего использовать одну из многих библиотек проверки формы JavaScript. Все еще смотрящий.
Ответ 3
Поскольку javascript живет в браузере, пользователю довольно легко проверить исходный код и обойти любые механизмы проверки js. Вот почему это обычно делается на стороне сервера.
Это боль, но я обычно выполняю проверку как в javascript, так и на сервере, таким образом, "нормальные" пользователи будут иметь быстрый ответ, а "хакеры" будут отсутствовать в системе. К сожалению, я думаю, что вам нужно идти, если вы хотите как хорошего пользовательского опыта, так и хорошей безопасности.
Чтобы ответить на ваш вопрос, насколько мне известно, нет общей библиотеки, которая может использоваться как на стороне клиента, так и на стороне сервера.
PS. помните, что JavaScript - это не Java!:-)
http://en.wikipedia.org/wiki/JavaScript#JavaScript_and_Java