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

问题
我在不同项目中不断遇到同样的模式:事件发生,需要检查一些条件,然后根据这些条件执行特定的操作。认证流程、游戏机制、物联网自动化、电子商务逻辑——它们都遵循这一模式。
大多数我找到的规则引擎要么太臃肿,无法满足我的需求,要么只能锁定在单一语言上。于是我自己动手实现了一个。
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
感谢阅读,欢迎随时提问。