John Hann @unscriptable
UI Architect, lifeIMAGE, Inc.
Brian Cavalier @briancavalier
Web Architect, Hovercraft Studios
Libraries FRameworks WTF?
Strict definition from Wikipedia
Not interchangeable
function onclick (e) {
var node, pirateButtons;
dojo.stopEvent(e);
node = e.target;
pirateButtons = dojo.query('.pirate-button', rootNode);
dojo.forEach(pirateButtons, function (button) {
button.disabled = true;
});
}
dojo.connect(rootNode, 'click', onclick);
function onclick (e) {
var node, pirateButtons;
e.preventDefault();
node = e.target;
pirateButtons = doc.querySelectorAll('.pirate-button', rootNode);
pirateButtons.forEach(function (button) {
button.disabled = true;
});
}
rootNode.addEventListener('click', onclick, false);
Close enough? (abstracted "standard")
function onclick (e) {
var node, pirateButtons;
e.preventDefault();
node = e.target;
pirateButtons = querySelectorAll('.pirate-button', rootNode);
array.forEach(pirateButtons, function (button) {
button.disabled = true;
});
}
event.addEventListener(rootNode, 'click', onclick, false);
How would this work?
Standard APIs
No Globals
Standard Modules are my Utopia
What's still wrong with this code?
function onclick (e) {
var node, pirateButtons;
e.preventDefault();
node = e.target;
pirateButtons = querySelectorAll('.pirate-button', rootNode);
array.forEach(pirateButtons, function (button) {
button.disabled = true;
});
}
event.addEventListener(rootNode, 'click', onclick, false);
What's still wrong with this code?
Can haz Modules? No.
Modules for Browsers
ES.Next Modules Tue @ 10:00 by Dave Herman
IOC / DI demo by Brian Cavalier Today @ 2:20
Can haz modules? Yes!
AMD module format
define(
[
'when',
'querySelectorAll',
'array',
'event',
'text!./CodezView.html',
'cssx/css!./CodezView.css'
],
function(when, querySelectorAll, array, event, template) {
// codez here pleaze!
});
AMD Loaders
AMD Momentum
AMD Momentum
Dozens of plugins already built
- "common" plugins: text!, i18n!, css!, js!/order!
- DOM-ready [curl/domReady](http://unscriptable.com/curl/curl/domReady.js)
- CSS Shims [cssx!](https://github.com/unscriptable/cssx)
- CoffeeScript [coffee!](https://gist.github.com/865150)
- [Google Maps, other libs](https://gist.github.com/882682)
Example AMD Modules on Github
Module Helpers on Github
YUI
Dojo 1.6 / 1.7
(still requires commitment)
I want to write a module!