状态机的运行时/动态创建

时间:2018-08-31 15:40:43

标签: javascript reactjs state-machine

我目前正在react中创建一个SPA,旨在完全在状态机上运行。这样做的主要动机如下:

  • 简化设计人员和开发人员的设计流程
  • 以确保整个应用程序具有确定性(错误更少)
  • 轻松快照应用程序的状态(精确定位显式错误的理想选择)
  • 轻松快照应用程序的历史记录(理想的方法是查找发生隐式错误的位置-例如ui故障)

我还努力使状态和UI问题在很大程度上彼此独立,以便开发人员可以同时进行这两项工作而不会受到干扰。


通常状态机被本地化(并在内部由某个对象管理)。例如,Timer可能会管理自己的状态(例如paused / running /等)。对于相对简单的机器来说,这很好,但是,当我们考虑创建单个应用程序范围内的分层机器时,这种方法(出于明显的原因)不起作用。

最重要的是,如果我们希望一台计算机代表整个应用程序,则该计算机必须能够处理该应用程序的任何动态方面。例如,假设用户进行某种形式的考试。此考试是从服务器中获取的,带有未知数量/类型的问题。状态机应能够为提取的每个问题动态创建新的状态分支,状态分支的类型由问题类型决定。


我已经看到了许多用于JS的状态机库,但是没有一个能够处理动态/运行时状态创建。


我开始在redux中创建自己的实现(请参见my other question),但是由于处理redux和状态机事件的方式不兼容,最终不得不将其废弃。

经过数周的尝试编写一个独立的库之后,我回到这里希望你们能对如何做到这一点有所了解。

我认为,对我而言,最大的障碍是保持一定水平的“质量”(即确保状态和UI之间的重叠最小,保持API简单并确保其与大多数UI框架通用),以防万一远离react

0 个答案:

没有答案