Подтвердить что ты не робот

Механизм правил в JavaScript

Есть ли в JavaScript механизм Rule?

Вопрос в этом контексте:

  • Рассмотрим веб-приложение, имеющее форму, которую пользователи заполняют.
  • Когда пользователь заполняет каждое поле и переходит к следующему, бизнес-логика, написанная на JavaScript, управляет видимостью (и другими атрибутами) элементов формы далее по странице.
  • Такая же бизнес-логика также применяется на стороне сервера после того, как форма отправляется, хотя и на Java, для защиты от любых сбоев/манипуляций со стороны браузера.

  • Теперь было бы неплохо, если бы у нас был JSR 94/Drools/JRules, такой как механизм правил, который выполнял бы правила как на Java, так и на JavaScript? С таким механизмом правил я могу избежать жесткого кодирования своих правил, а также сохраняю гибкость при наличии на стороне клиента, а также проверки на стороне сервера

(PS: Я пробовал маршрут AJAX и видел, что приложение становится намного менее отзывчивым, что затрудняет продажу пользователям, привыкшим к кодированной, чисто-javascript-версии).

4b9b3361

Ответ 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