evemit
v1.0.2
Published
Minimal and fast JavaScript event emitter for Node.js and front-end (only 1kb minified!).
Downloads
60
Readme
Evemit
Minimal and fast JavaScript event emitter for Node.js and front-end. Only 1kb minified (577 bytes gzipped).
Getting started
Install
Via NPM
npm install evemit --save
Or download the evemit.min.js file.
If Evemit
is used in CommonJS environment (Node.js, Browserify, Webpack, ...),
it is exposed as module with module.exports
.
So in CommonJS, evemit is not exposed in the global scope (even on client side) :)
var ev = require('evemit');
// true (it's the constructor)
console.log(typeof ev === 'function');
// undefined, even on front-end with Browserify, Webpack, ...
console.log(typeof Evemit);
Basic usage (without CommonJS)
// true
console.log(typeof Evemit === 'function');
// true
console.log(typeof window.Evemit === 'function');
Usage
var Evemit = require('evemit');
// Or if you are not in an environment CommonJS (Node.js, Browserify, Webpack, ...)
// uses directly `Evemit`, without `var Evemit = require('evemit')`
var obj = new Evemit();
obj.on('say-hello', function(hello) {
console.log(hello); // Hello World!
});
obj.emit('say-hello', 'Hello World!');
API
See the complete API doc.
Evemit.on({string} event, {function} listener, {mixed} [context])
Add a listener.
obj.on('say-hello', function(hello) {
console.log(hello); // Hello World!
});
obj.emit('say-hello', 'Hello World!');
Evemit.once({string} event, {function} listener, {mixed} [context])
Listen once
function myCallback(data) {
console.log(data.hello); // Hello 1
}
// Add listener, defined to be triggered "once"
obj.once('say-hello', myCallback);
// myCallback() is invoked and the listener is removed
obj.emit('say-hello', {
hello: 'Hello 1'
});
// myCallback() is not called because it is no longer listening on this event
obj.emit('say-hello', {
hello: 'Hello 2'
});
Evemit.emit({string} event, {mixed} [...arg])
Emit an event
obj.emit('ping');
With arguments passed to the listeners
obj.emit('ping', 'arg1', 'arg2', {an: 'object'});
Evemit.off({string} event, {function} listener)
Remove a listener
function myCallback(data) {
// some code ...
}
// add
a.on('say-hello', myCallback);
// remove
a.off('say-hello', myCallback);
Evemit.listeners({string} [event])
Get all listeners
// Returns an array containing all listeners
obj.listeners();
Count all listeners
// Returns a number.
obj.listeners().length;
Get all listeners of a given event
// Returns an array of listeners
obj.listeners('say-hello');
Count all listeners of a given event
obj.listeners('say-hello').length;
The methods of the Array
object can be used to manage the listeners.
Example
// reverse the order of the listeners execution
obj.listeners('my-event').reverse();
// slices
obj.listeners('my-event').slice(1, 3);
// Removes the first listener of the stack, and returns that listener
var firstListener = obj.listeners('my-event').shift();
// Removes the last listener of the stack, and returns that listener
var lastListener = obj.listeners('my-event').pop();
// ...
Use the property obj.events
if you want to get an object like
{event1: [array of listeners], event2: [array of listeners], ...}
Unit tests
evemit
is unit tested with Unit.js.
Run the tests
cd node_modules/evemit
npm test
To execute the tests on client side, download the test
directory and go on test/index.html file with your browser.
LICENSE
MIT (c) 2014, Nicolas Tallefourtane.
Author
| | |---| | Nicolas Talle | | |