diff options
| author | ruki <waruqi@gmail.com> | 2018-11-08 00:38:48 +0800 |
|---|---|---|
| committer | ruki <waruqi@gmail.com> | 2018-11-07 21:53:09 +0800 |
| commit | 26105034da4fcce7ac883c899d781f016559310d (patch) | |
| tree | c459a5dc4e3aa0972d9919033ece511ce76dd129 /node_modules/nanobus/README.md | |
| parent | 2c77f00f1a7ecb6c8192f9c16d3b2001b254a107 (diff) | |
| download | xmake-docs-26105034da4fcce7ac883c899d781f016559310d.tar.gz xmake-docs-26105034da4fcce7ac883c899d781f016559310d.zip | |
switch to vuepress
Diffstat (limited to 'node_modules/nanobus/README.md')
| -rw-r--r-- | node_modules/nanobus/README.md | 105 |
1 files changed, 105 insertions, 0 deletions
diff --git a/node_modules/nanobus/README.md b/node_modules/nanobus/README.md new file mode 100644 index 00000000..d57f697a --- /dev/null +++ b/node_modules/nanobus/README.md @@ -0,0 +1,105 @@ +# nanobus [![stability][0]][1] +[![npm version][2]][3] [![build status][4]][5] [![test coverage][6]][7] +[![downloads][8]][9] [![js-standard-style][10]][11] + +Tiny message bus. + +## Usage +```js +var nanobus = require('nanobus') +var bus = nanobus() + +bus.on('foo', function (color) { + console.log('color is', color) +}) + +bus.emit('foo', 'blue') +``` + +## FAQ +### Why not use the Node API? +We had the requirement for a `*` event to catch all calls, and figured we could +improve the file size at the same time. This library is about 1/3rd the size of +Node's version. And it was easy to build, so yeah good enough of an excuse hah. + +### How do I listen for replies? +You can do this by using the `.once()` listener and establishing a convention +around naming schemas. + +```js +bus.on('foo', function (color) { + console.log('foo called') + bus.emit('foo:res') +}) + +bus.once('foo:res', function () { + console.log('response received') +}) +bus.emit('foo') +``` + +### When shouldn't I use this package? +If you're only writing code that runs inside Node and don't need a `'*'` +listener, consider using the built-in event emitter API instead. + +### Are the emitters asynchronous? +No. If you're interested in doing that, use something like +[nanotick](https://github.com/yoshuawuyts/nanotick) to batch events and ensure +they run asynchronously. + +## API +### `bus = nanobus([name])` +Create a new `nanobus` instance. Optionally takes a name that will be used for +tracing in the browser using the `performance.mark` / `performance.measure` +API. + +### `bus.emit(eventName, [data])` +Emit an event. Arbitrary data can optionally be passed as an argument. `'*'` +listeners run after named listeners. + +### `bus.on(eventName, listener([data]))` +### `bus.addListener(eventName, listener([data]))` +Listen to an event. If the event name is `'*'` the listener signature is +`listener(eventName, [data], [performanceTimingId])`. + +### `bus.prependListener(eventName, listener([data]))` +Listen to an event, but make sure it's pushed to the start of the listener +queue. If the event name is `'*'` the listener signature is +`listener(eventName, [data])`. + +### `bus.once(eventName, listener([data]))` +Listen to an event, and clear it after it's been called once. If the event +name is `'*'` the listener signature is +`listener(eventName, [data], [performanceTimingId])`. + +### `bus.prependOnceListener(eventName, listener([data]))` +Listen to an event, and clear it after it's been called once. If the event +name is `'*'` the listener signature is `listener(eventName, [data])`. + +### `bus.removeListener(eventName, listener)` +Remove a specific listener to an event. + +### `listeners = bus.listeners(eventName)` +Return all listeners for a given event. `'*'` listeners are not included in +this list. Use `bus.listeners('*')` to get a list of `'*'` listeners. + +### `bus.removeAllListeners([eventName])` +Remove all listeners to an event. If no event name is passed, removes all +listeners on the message bus. `'*'` listeners are not removed unless +`eventName` is `*` or no event name is passed. + +## License +[MIT](https://tldrlegal.com/license/mit-license) + +[0]: https://img.shields.io/badge/stability-experimental-orange.svg?style=flat-square +[1]: https://nodejs.org/api/documentation.html#documentation_stability_index +[2]: https://img.shields.io/npm/v/nanobus.svg?style=flat-square +[3]: https://npmjs.org/package/nanobus +[4]: https://img.shields.io/travis/choojs/nanobus/master.svg?style=flat-square +[5]: https://travis-ci.org/choojs/nanobus +[6]: https://img.shields.io/codecov/c/github/choojs/nanobus/master.svg?style=flat-square +[7]: https://codecov.io/github/choojs/nanobus +[8]: http://img.shields.io/npm/dm/nanobus.svg?style=flat-square +[9]: https://npmjs.org/package/nanobus +[10]: https://img.shields.io/badge/code%20style-standard-brightgreen.svg?style=flat-square +[11]: https://github.com/feross/standard |
