Evemit
![npm module downloads per month](http://img.shields.io/npm/dm/evemit.svg)
Minimal and fast JavaScript / TypeScript 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) :)
const ev = require('evemit');
console.log(typeof ev === 'function');
console.log(typeof Evemit);
Basic usage (without CommonJS)
console.log(typeof Evemit === 'function');
console.log(typeof window.Evemit === 'function');
Usage
const Evemit = require('evemit');
const obj = new Evemit();
obj.on('say-hello', function(hello) {
console.log(hello);
});
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);
});
obj.emit('say-hello', 'Hello World!');
Evemit.once({string} event, {function} listener, {mixed} [context])
Listen once
function myCallback(data) {
console.log(data.hello);
}
obj.once('say-hello', myCallback);
obj.emit('say-hello', {
hello: 'Hello 1'
});
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) {
}
a.on('say-hello', myCallback);
a.off('say-hello', myCallback);
Get all listeners
obj.listeners();
Count all listeners
obj.listeners().length;
Get all listeners of a given event
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
obj.listeners('my-event').reverse();
obj.listeners('my-event').slice(1, 3);
const firstListener = obj.listeners('my-event').shift();
const 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