Knot.js
A browser-based event emitter, for tying things together.
Install / Use
/learn @callmecavs/Knot.jsREADME
Knot.js
A browser-based event emitter, for tying things together.
Usage
Knot was developed with a modern JavaScript workflow in mind. To use it, it's recommended you have a build system in place that can transpile ES6, and bundle modules. For a minimal boilerplate that does so, check out outset.
Follow these steps to get started:
Then dig into the API.
Install
Using NPM, install Knot.js, and add it to your package.json dependencies.
$ npm install knot.js --save
Call
Simply import Knot, then call it.
- Passed no parameters, Knot will return a new emitter
- Passed an object, Knot will extend it to include the emitter methods
Note that the this context in the event handlers:
- Is the object passed in, if one was provided
- Otherwise, it is the emitter itself
// import Knot
import knot from 'knot.js'
// create a new emitter
// in the handlers, 'this' refers to the emitter
const emitter = knot()
// extend an existing object, transforming it into an emitter
// in the handlers, 'this' refers to the Class
const object = new Class()
const extended = knot(object)
API
All methods are chainable.
Knot exposes the following API:
.on(name, handler)
Add a handler to a new or existing event.
// add an anonymous function as a handler
emitter.on('name', () => {
// ...
})
// add a named function as a handler
const handler = () => {
// ...
}
emitter.on('name', handler)
.once(name, handler)
Add a handler, that fires only once, to a new or existing event.
// add an anonymous function as a handler
emitter.once('name', () => {
// ...
})
// add a named function as a handler
const handler = () => {
// ...
}
emitter.once('name', handler)
.off(name[, handler])
Remove a specific handler from an event.
// handler must be a named function
const handler = () => {
// ...
}
emitter.off('name', handler)
Remove all of an event's handlers.
emitter.off('name')
.emit(name[, arguments])
Emit an event, firing all of its handlers.
emitter.emit('name')
Optionally, include arguments that will be passed to each handler.
// accept arguments in handler
emitter.on('name', (a, b, c, d) => console.log(a, b, c, d))
// include arguments in call to emit
emitter.emit('name', 1, '2', [3], {})
// LOG: 1 '2' [3] {}
Browser Support
Tested in all modern browsers and IE10+.
License
MIT. © 2017 Michael Cavalea
Related Skills
node-connect
344.4kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
99.2kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
344.4kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
qqbot-media
344.4kQQBot 富媒体收发能力。使用 <qqmedia> 标签,系统根据文件扩展名自动识别类型(图片/语音/视频/文件)。
