随着 JavaScript 单页应用开发日趋复杂,JavaScript 需要管理比任何时候都要多的状态。 这些状态可能包括服务器响应、缓存数据、本地生成尚未持久化到服务器的数据,也包括 UI 状态,如激活的路由,被选中的标签,是否显示加载动效或者分页器等等。管理不断变化的状态非常困难,如果一个模型的变化会引起另一个模型变化,那么当视图变化时,就可能引起对应模型以及另一个模型的变化,依次地,可能会引起另一个视图的变化。直至你搞不清楚到底发生了什么。状态在什么时候,由于什么原因,如何变化已然不受控制。 当系统变得错综复杂的时候,想重现问题或者添加新功能就会变得举步维艰。