A Bespoke Ecosystem
On front-end modularity
Mark Dalgleish
Thursday, July 31, 2014
Why Bespoke?
Bespoke.js is a blank canvas
Most frameworks are
busy adding features
Bespoke features over time:
- Manages deck state
- Handles keyboard input
- Handles touch input
- Adds CSS classes
- Allows plugins
Plugin first design
bespoke.from('#presentation', [
classes(),
keys(),
touch(),
bullets('li, .bullet'),
etc...
]);
Every plugin is a separate module
var bespoke = require('bespoke'),
classes = require('bespoke-classes'),
keys = require('bespoke-keys'),
touch = require('bespoke-touch'),
bullets = require('bespoke-bullets');
Plugins are just functions
module.exports = function(options) {
return function(deck) {
deck.next();
deck.prev();
// etc...
};
};
The API is inherently modular
- Using it teaches you how it works
- No black box, small approachable modules
- Users are encouraged to view source
Authoring experience?
Perfect for fighting
“fear of the imperfect solution”
Plugins provide a safe space for your crazy experiments
Managing versions is simplified
Great for maintenance mode
- Bugs are minimised
- Mistaken bug reports are also minimised
- Bug reports tend to go to the right place
- You get to keep your sanity