facebook的react是非常出色的一个想法。为什么这么说呢?让我们先看看针对javascript的一些“创新”方法:
1、用javascript本身来实现,比如ember,angular
2、通过最终编译成js的方式,比如gwt,clojurescript。
3、还有服务器一侧计算js的,vaalidan,https://vaadin.com/home
react采用在浏览器内用virutal dom方式,所有的变化都在浏览器内存中,用它的算法计算出最后的给浏览器使用的html,前提是它的算法和计算速度比dom高效。
在react被证明有效的情况下,facebook提出了flux概念,采用单向绑定的方式。yahoo的工程师似乎非常认同react和flux,于是写了这个dispathr。https://github.com/yahoo/dispatchr
它的描述非常简单:A Flux dispatcher for applications that run on the server and the client.
翻译:一个实现Flux概念的dispatcher,为需要同时在浏览器和服务器运行的app。
这里主要记录yahoo的dispatchr的特征。
1、为了适应服务器环境,dispatchr不采用单例模式,而是在每个http请求中实例化。
2、action的注册不使用一个个单独的callback,而是store中的一个单元(这个unit翻译成单元感觉不太对头),用代码展示就很清楚了。
TimeStore.handlers = {
'CHANGE_ROUTE_START': 'handleTimeChange',
'UPDATE_TIME': 'handleTimeChange'
};
说白了,既然store的实例化由dispatchr来做,那么dispatchr接到某个action时,自然能够找到对应的store的对应的handler。
3、dispathr的设计,能强迫使用者遵守flux的规范。手段就是通过暴露最小的interface。虽然说是interface,其实不过一种约定而已。
期望yahoo工程师围绕facebook react的一些产品能够得到足够的流行。