Your SlideShare is downloading. ×
has("builds")
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

has("builds")

557

Published on

Published in: Technology, Business
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
557
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
4
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. HAS(“BUILDS”) @dojoconf :: 16/17 Sept 2011 :: Peter HigginsMonday, September 19, 2011
  • 2. Me, Briefly. Dojo Toolkit Project Lead JavaScript Engineer @joost / Adconion Blogs Infrequently :: http://higginsforpresident.net Codes @GitHub :: http://github.com/phiggins42 Twitter: @phiggins Beer Drinking ExpertMonday, September 19, 2011
  • 3. THE HISTORY ... and motivationMonday, September 19, 2011
  • 4. //>>webkitMobile //>>excludeStart("webkitMobile", kwArgs.webkitMobile); /* //>>excludeEnd("webkitMobile"); //>>includeStart("webkitMobile", kwArgs.webkitMobile); ["indexOf", "lastIndexOf", "forEach", "map", "some", "every", "filter"].forEach( function(name, idx){ dojo[name] = function(arr, callback, thisObj){ if((idx > 1) && (typeof callback == "string")){ callback = new Function("item", "index", "array", callback); } return Array.prototype[name].call(arr, callback, thisObj); } } ); //>>includeEnd("webkitMobile"); //>>excludeStart("webkitMobile", kwArgs.webkitMobile); */ //>>excludeEnd("webkitMobile");Monday, September 19, 2011
  • 5. /sigh Sloppy code Error prone Difficult debugging / Build required Single specific platformMonday, September 19, 2011
  • 6. embed.js / Uxebu different direction, same idea: minimal bytes per-function modules minimal API surface (a la carte) Dojo based, but not DojoMonday, September 19, 2011
  • 7. Modernizr new features, not old bugs. up front testing, all tests always dojo.uacss-style HTML classesMonday, September 19, 2011
  • 8. dojo-fd dojo/trunk branch Pure feature detection first has() sightingMonday, September 19, 2011
  • 9. has.js Feature detection API Feature + Future tests available Minimal bytes / No initial overhead Simple API for configurable code paths Generic / AgnosticMonday, September 19, 2011
  • 10. has() in Dojo: old “sniff” require(["dojo/_base/sniff"], function(has){ has.add("some-magic", function(){ // randomly return true or false return Math.random() > 0.5; }); if(has("some-magic")){ // do it this way }else{ // do it this way } });Monday, September 19, 2011
  • 11. has() in Dojo: plugin define([ "dojo/has!native-array!mylib/Thinger!mylib/AltThinger" ], function(Thinger){ // Thinger is mylib/Thinger return if has("native-array") // otherwise is mylib/AltThinger // ideally they have the same API (a la embedjs) });Monday, September 19, 2011
  • 12. Builder hasMap in profile variable substitution dead path removalMonday, September 19, 2011
  • 13. Builder mylib.trim = has("string-trim") ? function(str){ return str.trim(); } : function(str){ /* regexp/replace that guy */ }; // build = { “string-trim”:“true” } becomes: my.trim = true ? function(a){ return a.trim(); } : function(a){ /* ... */ }; // becomes: my.trim = function(a){ return a.trim(); }Monday, September 19, 2011
  • 14. Misc. Building RequireJS Dojo 1.7 ua-optimize https://github.com/kriszyp/ua-optimizedMonday, September 19, 2011
  • 15. Detect or Assume has() is agnostic write own tests document historic truth limit impact of testing in production 10ms - 1800msMonday, September 19, 2011
  • 16. WHERE does this leave us?Monday, September 19, 2011
  • 17. AAAAND THANKS. I promise I’m done talking.Monday, September 19, 2011
  • 18. Me, again: http://dante.dojotoolkit.org http://higginsforpresident.net http://twitter.com/phiggins http://github.com/phiggins42 phiggins @ irc.freenode.net Questions?Monday, September 19, 2011

×