Qi Events
http://drkibitz.github.io/qi-events/
A no nonsense event API (BASED ON Backbone.Events).
Backbone.js 0.9.10
(c) 2010-2013 Jeremy Ashkenas, DocumentCloud Inc.
Backbone may be freely distributed under the MIT license.
For all details and documentation:
http://backbonejs.org
Usage
require('qi-events').mixin({});
.on('myevent', console.log, console)
.trigger('myevent', 'something', 'something', 'darkside');
Goals
- Maintain a no nonsense event dispatching/emitting/triggering API.
- Test it.
- Find a happy medium between simplicity, speed, and usage.
- Should be able to perform well in high performance situations.
- Allow for the most common use cases, but within reason to maintain high performance.
- Embrace CommonJS Module format
- Allow for UglifyJS and Closure Compiler with ADVANCED_OPTIMIZATIONS.
- Allow for use as the basis of other event implmentations (scenegraph)
Changes since Backbone.Events
-
Added "use strict"
-
Converted to CommonJS module
-
Module is a constructor that can be used with class inheritence
-
Removed very minor dependencies on underscore.js and Backbone.js
- Added mixin method to replace Backbone mixin functionality
- Underscore was only used for slice, just using the native method
-
Completely removed listenTo(), listenToOnce(), and stopListening() methods
-
Change eventsApi() to accept an array of event names
-
Change eventsApi() to receive function references instead of "action" strings
- This is a micro optimization and allows better obfuscation
-
trigger() no longer calls eventsApi(), this is a very rare (and mostly unnecessary) use case that can be avoided
- Optimization is important when triggering, but convenience is important when adding and removing
-
With trigger not using eventsApi(), it allowed further optimizations on eventsApi() and trigger()
- Removed ctx property from _events[name] object, just use context property instead
- Fixed lint errors in the process
-
Added aStart argument to triggerEvents() as a logical slice removing slice call for most cases