第一版本的DataManager使用大Hash表对Template中的对象进行直接的匹配,等于把传递进入DataManager的json给拍成扁平的Hash表,这是十分愚蠢的,完全地违背了单一数据来源,导致在双向更新数据、向下更新数据、冒泡更新数据时出现大量的逻辑判定。
如此迎来了DataManager的重构。大Hash表模块为动态生成,并做为缓存模块,在性能和耦合度间建立了一个平衡点,从而不再对数据格式做限制,拓展性上也有极大的提升(拓展了监听类的数据就是一个例子,虽然目前还未优化结构,耦合度也比较高,但如果是在第一版本中,想把监听类并入DataManager内部实在妄想)。
然而在这次TODOMVC的开发过程中由each模块拓展出来的子viewModel没有真正地遵守单一数据来源,所以导致数据的冒泡更新只存在于单个DataManager Instance内部,而当我试图使用逻辑去修复父子关系的Instance的冒泡时,发现会导致构架中的耦合点全部出现问题。
所以DataManager即将迎来第二次重构,完全地遵守单一数据来源,真正从构架上实现双向更新、向下更新、冒泡更新。这次重构也会一定程度上优化内存使用,毕竟是真正在使用单一的数据源,不再有分布式的结构。
这样事件绑定中也有望实现VM实例正确地传递,从而实现更有好地each类操作(remove等)。
这次重构同时也要解决上次Controller层开发遗留的大耦合问题,深度整合计算类到DataManager中。而Controller层也会对数组等一些特殊类型的数据对象进行包裹,优化操作的API。
顺利的话完成这些工作,按先前定的里程碑,v0.10.0就是要正式发布了。
然后就是实现常见的应用实例、UI实例,对比各种MV*,来优化API,直到正式版本的发布。