我构建了一个轻量级规则引擎,适用于 JS、C# 和 Dart——它是如何工作的

发布: (2026年2月21日 GMT+8 08:04)
4 分钟阅读
原文: Dev.to

Source: Dev.to

封面图片:我为 JS、C# 和 Dart 构建的轻量级规则引擎 — 工作原理概述

问题

我在不同项目中不断遇到同样的模式:事件发生,需要检查一些条件,然后根据这些条件执行特定的操作。认证流程、游戏机制、物联网自动化、电子商务逻辑——它们都遵循这一模式。

大多数我找到的规则引擎要么太臃肿,无法满足我的需求,要么只能锁定在单一语言上。于是我自己动手实现了一个。

ARE 是什么?

ARE(Action Rule Event) 是一个轻量级、无依赖的规则引擎。概念非常直接:

  • 事件 – 发生的事情(用户登录、温度变化、订单下达)
  • 规则 – 需要评估的条件(如果温度 > 30,如果订单总额 > 100)
  • 动作 – 条件满足时执行的操作(发送通知、应用折扣)

处理流程:事件 → 中间件 → 条件评估 → 规则匹配 → 动作执行

多平台支持

我希望它能在我工作的任何地方使用,所以 ARE 在三个平台上都有实现:

  • JavaScript/TypeScript → npm
  • C# / .NET → NuGet
  • Dart / Flutter → pub.dev

三者采用相同的 API 设计。只要会其中一种,就能使用全部。

交互式 Playground

文档固然重要,但我更想让大家亲身感受引擎的工作方式。因此我构建了一个交互式 Playground,包含三个真实场景:

  • 🎮 RPG 游戏 – 战斗规则、掉落、区域效果、Boss 战
  • 🏠 智能家居 – 传感器事件、时间表、能耗管理、安全
  • 🛒 电子商务 – 订单处理、库存警报、客户奖励

每个场景都预配置了事件、规则和动作。触发事件后即可实时观察引擎的处理过程。

🔗 尝试一下: https://are-playground.netlify.app

我自豪的特性

  • 规则流图 – 动画化的管线,展示每个处理阶段
  • 规则调试器 – 展开任意规则,可逐条件查看(检查的字段、使用的运算符、期望值 vs 实际值、通过/失败)
  • 关系图 – 可视化事件、规则、动作之间的连接;悬停即可高亮关联
  • 交互式教程 – 为首次访问者提供的引导,逐步讲解每个面板
  • 完整 CRUD – 随时添加、编辑或删除事件、规则、动作;无需编写代码即可创建自己的场景
  • 代码沙箱 – 使用 Monaco 编辑器从零编写自己的 ARE 逻辑

技术栈

  • React 19 + TypeScript
  • Vite
  • Tailwind CSS v4
  • Zustand(状态管理)
  • Framer Motion(动画)
  • i18next(英文 + 土耳其文)

接下来

我期待收到反馈。如果你尝试了 Playground,欢迎告诉我:

  • 事件 → 规则 → 动作的概念是否清晰?
  • 你会把它应用到哪些使用场景?
  • 还有哪些缺失的功能会让它在你的项目中更有价值?

GitHub: https://github.com/BeratARPA/ARE

感谢阅读,欢迎随时提问。

0 浏览
Back to Blog

相关文章

阅读更多 »