Datacast.js
npm install datacast --save
这是一个数据层框架,工作方式类似于jQuery的自定义事件。一边通过注册接收器(receive
方法)来获取数据
,另一边通过send
方法来向对应的接收器发送数据。
send
方法通过一个路径字符串来确定哪些接收器需要被触发。
路径字符串可以有层级关系。例如grandfather.farther.children
,中间通过.
来进行分割。
(也可以用数组的方式来表示,例如['grandfather','farther','children']
)
对于接收器而言,子级接收器可以收到父级发来的消息。而对于发送函数来说,父级可以向所有子级发送数据。
例如:
; ; ; ;;; /** output: 1: a 2: a 3: a 2: b 3: b 3: c* */
cache
来保存上一次发送的数据
通过事件监听模型有一个不足就是,监听者无法主动地向发送者请求数据,如果发送者不再发一次 监听者就永远也拿不到。
不过有时候确实需要在注册完监听器后立刻获取一次数据,用于初始化。 这时候缓存就可以排上用场了。
通过cache
方法来指定缓存哪一条路径上传输的数据。缓存之后就可以调用requestCache
方法
来把缓存数据发送给另一条路径上的接收器。或者也可以调用getCache
方法直接获取。
requestCache
方法接受两个参数。第一个是对应路径字符串在缓存中保存的数据,
第二个是要把给数据重新发送到哪一条路径上。
例如:
; ; ; ; ; /** output:** 1: 123* 2: 123* */
持久化缓存数据
cache
方法除了可以缓存对应路径上的数据之外还可以通过(onReceive
, onRequest
)来持久化数据或从外部读取数据。
onReceive
会在cache
收到新的数据时被触发。通过它,可以对数据进行保存,或者替换要保存到
缓存器中的数据。
onRequest
会在当要获取cache
中数据时被触发,通过它可以从外部读取数据或者替换
要返回的数据。
例如:
; ; ; ; /** output:** 123* 1-in 123 undefined* 1-out 123* 123* */
到这基本上就介绍完了,如果觉得不是很清楚,建议直接看看源代码,反正也没多少行。
API
/** * 注册数据接收器 * @param * @param * @return */
/** * 注册只接收一次的数据接收器 * @param * @param * @return */
/** * 注销数据接收器 * @param * @return */
/** * 向指定路径发送消息 * @param * @param data 要发送的数据 * @return */
/** * 缓存指定路径上的数据 * @param * @param defaultValue 可选参数,默认值 * @param * @param * @return */
/** * 请求cache中的数据 * @param * @param * @return */
/** * 直接获取path所对应cache中的数据 * @param * @return 保存在cache中的数据 */
/** * 设置path所对应cache中的数据 * @param * @param data 要设置的数据 * @return */
innerData: //内部对象 cacheData //保存了对应地址上缓存的数据 dispatchList//保存了所有接收器函数