Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
#dadtDojo Already Did That@phiggins / JSconf.us 2013Wednesday, May 29, 13
Me!* JSconf alumni* Former Dojo Project Lead* generic code monkeyWednesday, May 29, 13
PROFESSIONAL CAT HERDER(TRUE OF ANY OSS LEAD)Wednesday, May 29, 13
PRINCESS FLUFFYBUTT(I’VE BEEN PREOCCUPIED)Wednesday, May 29, 13
Welcome to JSCONF ...Wednesday, May 29, 13
JSCONF* Enjoy your lunch transition* Digest, contemplate.* Innovate.Wednesday, May 29, 13
History of the WorldPart IIIWednesday, May 29, 13
CELEBRATING 20 YEARS OF INTERWEBSTUBES?Wednesday, May 29, 13
1993-1998:The dark agesWednesday, May 29, 13
`93-`98* best when viewed in ...* still BBSingWednesday, May 29, 13
1999-2000:y2kmangWednesday, May 29, 13
`99-`NaN* Ajax* IE 5(ish)* Netscape 5(ish)* Opera 4(ish)* lynx* KonquerorWednesday, May 29, 13
2001-2005:A renaissance of sorts.Wednesday, May 29, 13
`01-`05* Flash.* Everywhere.* Lots of learning, hacking.* Beginnings of js libsWednesday, May 29, 13
2006-2009:Sweet spot.Wednesday, May 29, 13
`06-`09* Lots of fighting.* ... we’ll double back.* Dojo doing thingsWednesday, May 29, 13
2010-Date.now()The modern era.Wednesday, May 29, 13
`11+HTTPS://SPEAKERDECK.COM/ANGUSCROLL/THE-POLITICS-OF-JAVASCRIPTWednesday, May 29, 13
`11+HTTPS://SPEAKERDECK.COM/ANGUSCROLL/THE-POLITICS-OF-JAVASCRIPTWednesday, May 29, 13
And Dojo Did?It.Wednesday, May 29, 13
<div dojoType="foo.bar.baz"></div>Wednesday, May 29, 13
<div dojoType="foo.bar.baz"></div>var cls = getObject(node.getAttribute("dojoType"));new cls({ props }, node);Wednesday, M...
<!-- div dojoType="foo.bar.baz"></div--><div data-dojo-type="foo.bar.baz"></div>var cls = getObject(node.getAttribute("dat...
<!-- div dojoType="foo.bar.baz"></div--><div data-dojo-type="foo.bar.baz"></div>var cls = getObject(node.getAttribute("dat...
var hasDataset = (function(){var n = document.createElement("div");n.setAttribute("data-a-b", "c");return !!(n.dataset && ...
var getdata, setdata;if(hasDataset){getdata = function(n, prop){ return n.dataset[prop]; };setdata = function(n, prop, dat...
<div dojoType="foo.bar.baz"></div><div data-dojo-type="foo.bar.baz"></div>// Backboneishnew MyView({$el: $(node)})// boots...
Module Loadingo/Wednesday, May 29, 13
Wednesday, May 29, 13
// fetch foo/bar/__package__.jsdojo.require("foo.bar.*");dojo.addOnLoad(function(){console.warn(foo.bar.baz)});Wednesday, ...
// fetch foo/bar/baz.jsdojo.require("foo.bar.baz");dojo.addOnLoad(function(){console.warn(foo.bar.baz)});Wednesday, May 29...
// fetch foo/bar/baz.jsdojo.require("foo.bar.baz");SYNCHRONOUS XHR + EVALdojo.provide("foo.bar.baz");dojo.require("foo.bar...
SYNCHRONOUS XHR + EVAL* ORIGIN LIMITATIONS* **** EVIL (?)Wednesday, May 29, 13
James burkeDojo / AMD / requirejs / et alWednesday, May 29, 13
dojo._xdResourceLoaded(function(){return {depends:[["provide","dojo.foo"],],defineResource: function(dojo, dijit, dojox){i...
AMD* asynchronous* anonymous* x-domainWednesday, May 29, 13
define(["foo/bar/baz"], function(foobarbaz){return {bam: true};});Wednesday, May 29, 13
node.js /ecma* Still being argued* UMD a messWednesday, May 29, 13
BACKEND JAVASCRIPTNODE, ET ALWednesday, May 29, 13
Dojo Did* Rhino / multi-env support* Dojo Build tools* dojox.dtlWednesday, May 29, 13
Dojo Did* Rhino / multi-env support* Dojo Build tools* dojox.dtlADDED NODE.JSUSING NODE.JSABANDONED :(Wednesday, May 29, 13
No end to Node potential.Wednesday, May 29, 13
UI LIBRARIESAND “PLUGINS”Wednesday, May 29, 13
Dijit... could do a whole talk hereWednesday, May 29, 13
Dijit* instance based control* externalized resources* a11y* l10n / i18nWednesday, May 29, 13
Dijit* Backwards compatible* Unified “everything”Wednesday, May 29, 13
Dijit could:* better event registration* alternate templatingWednesday, May 29, 13
CORE JS... IT’S JUST JAVASCRIPTWednesday, May 29, 13
Underscore* lots of handy stuff.Wednesday, May 29, 13
Underscore“The tie to go with jQuery’s tux”Wednesday, May 29, 13
UnderscoreShouldn’t have to fix* map()* or bind()* or `this`Wednesday, May 29, 13
Underscoreis not amd/umd ready ...** LODASHWednesday, May 29, 13
Lots of stuffis not amd/umd ready ...Wednesday, May 29, 13
It’s Just JS* Don’t be limited by “bestpractice”* Understand the language* Enjoy the nuanceWednesday, May 29, 13
Questions?Wednesday, May 29, 13
PROJECTDATE CLIENT29/5/2013 @PHIGGINSFIN.GRACIAS.Wednesday, May 29, 13
Upcoming SlideShare
Loading in …5
×

Jsconf.us.2013

698 views

Published on

  • Be the first to comment

  • Be the first to like this

Jsconf.us.2013

  1. 1. #dadtDojo Already Did That@phiggins / JSconf.us 2013Wednesday, May 29, 13
  2. 2. Me!* JSconf alumni* Former Dojo Project Lead* generic code monkeyWednesday, May 29, 13
  3. 3. PROFESSIONAL CAT HERDER(TRUE OF ANY OSS LEAD)Wednesday, May 29, 13
  4. 4. PRINCESS FLUFFYBUTT(I’VE BEEN PREOCCUPIED)Wednesday, May 29, 13
  5. 5. Welcome to JSCONF ...Wednesday, May 29, 13
  6. 6. JSCONF* Enjoy your lunch transition* Digest, contemplate.* Innovate.Wednesday, May 29, 13
  7. 7. History of the WorldPart IIIWednesday, May 29, 13
  8. 8. CELEBRATING 20 YEARS OF INTERWEBSTUBES?Wednesday, May 29, 13
  9. 9. 1993-1998:The dark agesWednesday, May 29, 13
  10. 10. `93-`98* best when viewed in ...* still BBSingWednesday, May 29, 13
  11. 11. 1999-2000:y2kmangWednesday, May 29, 13
  12. 12. `99-`NaN* Ajax* IE 5(ish)* Netscape 5(ish)* Opera 4(ish)* lynx* KonquerorWednesday, May 29, 13
  13. 13. 2001-2005:A renaissance of sorts.Wednesday, May 29, 13
  14. 14. `01-`05* Flash.* Everywhere.* Lots of learning, hacking.* Beginnings of js libsWednesday, May 29, 13
  15. 15. 2006-2009:Sweet spot.Wednesday, May 29, 13
  16. 16. `06-`09* Lots of fighting.* ... we’ll double back.* Dojo doing thingsWednesday, May 29, 13
  17. 17. 2010-Date.now()The modern era.Wednesday, May 29, 13
  18. 18. `11+HTTPS://SPEAKERDECK.COM/ANGUSCROLL/THE-POLITICS-OF-JAVASCRIPTWednesday, May 29, 13
  19. 19. `11+HTTPS://SPEAKERDECK.COM/ANGUSCROLL/THE-POLITICS-OF-JAVASCRIPTWednesday, May 29, 13
  20. 20. And Dojo Did?It.Wednesday, May 29, 13
  21. 21. <div dojoType="foo.bar.baz"></div>Wednesday, May 29, 13
  22. 22. <div dojoType="foo.bar.baz"></div>var cls = getObject(node.getAttribute("dojoType"));new cls({ props }, node);Wednesday, May 29, 13
  23. 23. <!-- div dojoType="foo.bar.baz"></div--><div data-dojo-type="foo.bar.baz"></div>var cls = getObject(node.getAttribute("data-dojo-type"));new cls({ props }, node);Wednesday, May 29, 13
  24. 24. <!-- div dojoType="foo.bar.baz"></div--><div data-dojo-type="foo.bar.baz"></div>var cls = getObject(node.getAttribute("data-dojo-type"));new cls({ props }, node);// WAT? no dataset?Wednesday, May 29, 13
  25. 25. var hasDataset = (function(){var n = document.createElement("div");n.setAttribute("data-a-b", "c");return !!(n.dataset && n.dataset.aB == "c");})();Wednesday, May 29, 13
  26. 26. var getdata, setdata;if(hasDataset){getdata = function(n, prop){ return n.dataset[prop]; };setdata = function(n, prop, data){ n.dataset[prop] = data; };}else{function _hypen(m){ return "-" + m.toLowerCase(); }function toDataHyphen(str){ return "data-" + str.replace(/[A-Z]/g, _hypen); }getdata = function(n, prop){return n.getAttribute(toDataHyphen(prop));};setdata = function(n, prop, data){n.setAttribute(toDataHyphen(prop), data);};}var cls = getObject(getdata(node, "dojoType"));new cls({ props }, node);Wednesday, May 29, 13
  27. 27. <div dojoType="foo.bar.baz"></div><div data-dojo-type="foo.bar.baz"></div>// Backboneishnew MyView({$el: $(node)})// bootstrappy<button data-reset-text="ha" data-foo-text="bar!">ha</button>$("button").button("foo");Wednesday, May 29, 13
  28. 28. Module Loadingo/Wednesday, May 29, 13
  29. 29. Wednesday, May 29, 13
  30. 30. // fetch foo/bar/__package__.jsdojo.require("foo.bar.*");dojo.addOnLoad(function(){console.warn(foo.bar.baz)});Wednesday, May 29, 13
  31. 31. // fetch foo/bar/baz.jsdojo.require("foo.bar.baz");dojo.addOnLoad(function(){console.warn(foo.bar.baz)});Wednesday, May 29, 13
  32. 32. // fetch foo/bar/baz.jsdojo.require("foo.bar.baz");SYNCHRONOUS XHR + EVALdojo.provide("foo.bar.baz");dojo.require("foo.bar.baz.bam");foo.bar.baz = { bam: true };REPEAT.Wednesday, May 29, 13
  33. 33. SYNCHRONOUS XHR + EVAL* ORIGIN LIMITATIONS* **** EVIL (?)Wednesday, May 29, 13
  34. 34. James burkeDojo / AMD / requirejs / et alWednesday, May 29, 13
  35. 35. dojo._xdResourceLoaded(function(){return {depends:[["provide","dojo.foo"],],defineResource: function(dojo, dijit, dojox){if(!dojo._hasResource["dojo.foo"]){dojo._hasResource["dojo.foo"] = true;/* original code */}}};});Wednesday, May 29, 13
  36. 36. AMD* asynchronous* anonymous* x-domainWednesday, May 29, 13
  37. 37. define(["foo/bar/baz"], function(foobarbaz){return {bam: true};});Wednesday, May 29, 13
  38. 38. node.js /ecma* Still being argued* UMD a messWednesday, May 29, 13
  39. 39. BACKEND JAVASCRIPTNODE, ET ALWednesday, May 29, 13
  40. 40. Dojo Did* Rhino / multi-env support* Dojo Build tools* dojox.dtlWednesday, May 29, 13
  41. 41. Dojo Did* Rhino / multi-env support* Dojo Build tools* dojox.dtlADDED NODE.JSUSING NODE.JSABANDONED :(Wednesday, May 29, 13
  42. 42. No end to Node potential.Wednesday, May 29, 13
  43. 43. UI LIBRARIESAND “PLUGINS”Wednesday, May 29, 13
  44. 44. Dijit... could do a whole talk hereWednesday, May 29, 13
  45. 45. Dijit* instance based control* externalized resources* a11y* l10n / i18nWednesday, May 29, 13
  46. 46. Dijit* Backwards compatible* Unified “everything”Wednesday, May 29, 13
  47. 47. Dijit could:* better event registration* alternate templatingWednesday, May 29, 13
  48. 48. CORE JS... IT’S JUST JAVASCRIPTWednesday, May 29, 13
  49. 49. Underscore* lots of handy stuff.Wednesday, May 29, 13
  50. 50. Underscore“The tie to go with jQuery’s tux”Wednesday, May 29, 13
  51. 51. UnderscoreShouldn’t have to fix* map()* or bind()* or `this`Wednesday, May 29, 13
  52. 52. Underscoreis not amd/umd ready ...** LODASHWednesday, May 29, 13
  53. 53. Lots of stuffis not amd/umd ready ...Wednesday, May 29, 13
  54. 54. It’s Just JS* Don’t be limited by “bestpractice”* Understand the language* Enjoy the nuanceWednesday, May 29, 13
  55. 55. Questions?Wednesday, May 29, 13
  56. 56. PROJECTDATE CLIENT29/5/2013 @PHIGGINSFIN.GRACIAS.Wednesday, May 29, 13

×