snack.js
... because sometimes, all you need is a snack.
Features
Tiny!
- ~3.4kb! (minified, gzipped)
Elements
- Use any selector engine. Ships with multiple builds (QSA, Qwery, Slick, Sizzle)
- Several element methods
- API to add more element methods
Events
- Cross-browser DOMContentLoaded (domready)
- Cross-browser DOM events
- Event Delegation (with or without a selector engine)
Pub/Sub
- Publisher objects for application communication
AJAX
- Cross-browser AJAX
- JSONP
Utilities
- Shallow object merge with
snack.extend
- Prototypal inheritance with
Object.create
- A few other utilities (only those snack uses)
Documentation
Snack is very well documented. In the repository is a docs folder.
Simply open docs/index.html
in your browser or visit the Snack Homepage.
Contributing / Testing / Building Snack
Submodules (selector engines)
Because Snack ships with several selector engines, there are submodules for each one. You'll need to first update them to build or test Snack:
From the root of the repository:
$ git submodule init
$ git submodule update
Tests
The tests require node >= 0.4.6, npm >= 1.0.0, and submodules to be updated (see above).
To run the tests, install dependencies and fire up the server (used for all the ajax stuff).
$ npm install .
$ node server.js
Building
Build snack like so:
$ ./build
The tests do not require you to build snack.
Inspiration and code snatching from:
- MooTools (c) Valerio Proietti, MIT license
- jQuery (c) John Resig, Dual license MIT or GPL Version 2
- Zepto (c) Thomas Fuchs, MIT License
- ContentLoaded (c) Diego Perini, MIT License
License
MIT Style license.
Copyright
Copyright (c) Ryan Florence