我目前正在react
中创建一个SPA,旨在完全在状态机上运行。这样做的主要动机如下:
我还努力使状态和UI问题在很大程度上彼此独立,以便开发人员可以同时进行这两项工作而不会受到干扰。
通常状态机被本地化(并在内部由某个对象管理)。例如,Timer
可能会管理自己的状态(例如paused
/ running
/等)。对于相对简单的机器来说,这很好,但是,当我们考虑创建单个应用程序范围内的分层机器时,这种方法(出于明显的原因)不起作用。
最重要的是,如果我们希望一台计算机代表整个应用程序,则该计算机必须能够处理该应用程序的任何动态方面。例如,假设用户进行某种形式的考试。此考试是从服务器中获取的,带有未知数量/类型的问题。状态机应能够为提取的每个问题动态创建新的状态分支,状态分支的类型由问题类型决定。
我已经看到了许多用于JS的状态机库,但是没有一个能够处理动态/运行时状态创建。
我开始在redux
中创建自己的实现(请参见my other question),但是由于处理redux和状态机事件的方式不兼容,最终不得不将其废弃。
经过数周的尝试编写一个独立的库之后,我回到这里希望你们能对如何做到这一点有所了解。
我认为,对我而言,最大的障碍是保持一定水平的“质量”(即确保状态和UI之间的重叠最小,保持API简单并确保其与大多数UI框架通用),以防万一远离react
。