JavaScript中的规则引擎[关闭]

Posted

技术标签:

【中文标题】JavaScript中的规则引擎[关闭]【英文标题】:Rule Engine in JavaScript [closed] 【发布时间】:2011-12-01 10:59:10 【问题描述】:

javascript 中有规则引擎吗?

问题是在这种情况下:

考虑一个具有用户填写表单的 Web 应用程序。 当用户填写每个字段并进入下一个字段时,用 JavaScript 编写的业务逻辑控制页面下方表单元素的可见性(和其他属性)。

在提交表单后,同样的业务逻辑也应用在服务器端,尽管是在 Java 中,以防止浏览器端发生任何意外/操作。

现在,如果我们有一个类似于 JSR 94/Drools/JRules 的规则引擎,它可以在 Java 和 JavaScript 中执行规则,那不是很好吗?使用这样的规则引擎,我可以避免对规则进行硬编码,并且还保留了客户端和服务器端验证的灵活性

(PS:我尝试过 AJAX 路线,发现应用程序的响应速度大大降低,因此很难向习惯于手工编码的纯 JavaScript 版本的用户销售。)

【问题讨论】:

如果我一直在思考 1995 年比利·麦迪逊电影中的“奥多伊尔规则”,我无法自拔…… 服务器端 JavaScript 总是有可能的。我相信有在 Java 中运行的 JavaScript 引擎,还有 Node.JS 或类似的。 【参考方案1】:

JSR-94 是 Java 规范,所以我看不出它与浏览器有什么关系。

有 Google JSON 规则:

http://code.google.com/p/jsonrules/

您说您尝试了 AJAX 路由。这是否意味着在服务器上运行的规则引擎和访问它的异步调用?

【讨论】:

是的.. 我想知道是否有人也有在 JavaScript 中实现 JSR-94 的产品.. 我所说的“AJAX 路由”是指在服务器和 JavaScript 上运行的规则引擎调用 XHR 请求(例如,通过 DWR 库)与之对话 项目现已关闭,仍处于测试阶段。 你和它有联系吗,特德?很抱歉听到它。不知道用的多吗?【参考方案2】:

这是一个有效的问题。来自this article,JSR 94

不标准化以下内容: 规则引擎本身 规则的执行流程 用于描述规则的语言 Java EE技术的部署机制

因此,可以使用可以在客户端和服务器上执行的 DSL,并且可以按照 JSR 94 架构进行开发、执行和管理。或不。

另一篇文章Creating a simple rules engine using the Java scripting API 使用 JSR-233 和其他东西来创建规则引擎系统。然而,这早于 JSR 94。

因为我也在寻找解决方案,所以我访问了这个 *** 页面。目前,我有一个页面要在客户端进行验证,其中的字段组可以触发不同的验证规则,并且要求正在发生变化。用命令式代码编写它只会造成高圈复杂度的混乱。

然而,最简单的做法是使用众多 JavaScript 表单验证库之一。还在寻找。

【讨论】:

【参考方案3】:

由于 javascript 存在于浏览器中,因此用户很容易检查您的源代码并绕过任何 js 验证机制。这就是为什么它通常在服务器端完成。

这很痛苦,但我通常在 javascript 和服务器上都实现验证,这样“普通”用户将获得快速响应,而“黑客”将被排除在系统之外。不幸的是,如果您想要良好的用户体验和良好的安全性,我认为这是您需要采取的方式。

为了回答您的问题,据我所知,没有可在客户端和服务器端使用的通用库。

PS。记住 JavaScript 不是 Java! :-) http://en.wikipedia.org/wiki/JavaScript#JavaScript_and_Java

【讨论】:

以上是关于JavaScript中的规则引擎[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

我应该使用啥规则引擎? [关闭]

关于规则引擎的神话是啥? [关闭]

包含规则引擎的系统是不是曾经真正成功过? [关闭]

我可以从哪里开始学习规则引擎? [关闭]

Java规则引擎的优缺点[关闭]

C#:英语语法规则引擎? [关闭]