让我们想象一下,在一个面向对象的世界中,我想构建一个Torrent
对象来监听网络并让我与之交互。它将继承一个 EventEmitter 并且看起来像这样:
var torrent = new Torrent(opts)
torrent.on('ready', cb) // add torrent to the UI
torrent.on('metadata', cb) // update data in the UI
我也可以让它做一些事情:
torrent.stop()
torrent.resume()
当然,如果我想从内存中删除种子,我可以调用torrent.destroy()
.
这种 OO 方法很酷的一点是,我可以轻松地将这个功能打包到它自己的 npm 模块中,进行测试,并为用户提供一个干净、可重用的 API。
我的问题是,如何使用 Cycle.js 应用程序实现这一点?
如果我创建一个驱动程序,则不清楚我将如何创建许多种子并拥有自己的独立听众。还要考虑我想以一种其他人可以轻松地在其他 Cycle.js 应用程序中重用它的方式来打包功能。