vue与mobx
By admin
最近接触到MobX,读了读api,发现其结合了vue,meteor的一些写法,为了源码看得更明白些还特意看了看typescript。
其autorun的api很早之前在meteor上看过,当时觉得特别神奇。哇,这就能自动监听数据更新并运行了,当时还以为meteor是靠厉害的词法分析来推倒出数据依赖关系呢。
后来看了vue,发现这种依赖是通过get来收集依赖,然后在set的时候再触发依赖运行。但由于一直以为autorun会在收集依赖之前就可以运行,仍然觉得autorun很神奇。
后来运行了一下mobx例子才发现其autorun和vue一样,其监听函数也必须初始全运行一次收集好依赖关系,才能在数据更新时正确运行。那种我以为的只有在数据更新时,autorun才会开始正确执行的想法是错误的。meteor的autorun也不是靠什么厉害的词法分析来实现的。底层大概也是靠Object.defineProperty来实现的,虽然还没看过meteor的源码。