Fast, Modular Code With Jquery and Requirejs: James Burke Mozilla Messaging Twitter: Jrburke
Fast, Modular Code With Jquery and Requirejs: James Burke Mozilla Messaging Twitter: Jrburke
James Burke
Mozilla Messaging
http://tagneto.blogspot.com
twitter: jrburke
http://requirejs.org
• Server free
http://www.flickr.com/photos/jpasden/67513019/
Sunday, April 25, 2010
Script Tag Vomit
<script src="../js/JQuery.js" type="text/javascript"></script>
http://www.flickr.com/photos/nicasaurusrex/1363221060/
Sunday, April 25, 2010
Script Tag Vomit
• Slow
> many HTTP requests
> blocking render
• Manual Dependencies
• Lacks Encapsulation
http://www.flickr.com/photos/nicasaurusrex/1363221060/
Sunday, April 25, 2010
RequireJS
• encapsulation
• optimization tool
> JS and CSS
http://www.flickr.com/photos/jjay/112404324/
Sunday, April 25, 2010
Better Vomit
<script src="../js/require-jquery.js"></script>
<script>
require([
“SwfObject”,
“JsLib”,
“Utils”
“Validation”,
“Personal”,
“SpecialFeatures”,
“Basket”,
“Catalog”,
“Marketing”,
“Search”,
“GlobalSpecialUIInit”,
...etc...
]);
</script> • Async
http://www.flickr.com/photos/jjay/112404324/
Sunday, April 25, 2010
Best
<script src="../js/require-jquery.js"></script>
<script>require([“app”]);</script>
http://www.flickr.com/photos/jjay/112404324/
Sunday, April 25, 2010
Delicious jQuery Sample http://www.flickr.com/photos/tracyhunter/140049154/
http://requirejs.org/docs/download.html
• On-the-fly loading
http://www.flickr.com/photos/jphilipson/2444879696/
Sunday, April 25, 2010
• For Dev:
../../requirejs/build/build.sh baseUrl=. name=app out=app-built.js shallowExclude=jquery.alpha
• For Deployment:
<script src="scripts/require-jquery.js"></script>
<script>
require(["app-built"]);
</script>
http://requirejs.org/docs/optimization.html
• comment stripping
http://requirejs.org/docs/optimization.html
• Strict encapsulation
http://www.flickr.com/photos/origomi/62687502/
//Extend jQuery
$.fn.foo = function() {};
$(function() {
//execute on
//page load
});
}(jQuery));
http://www.flickr.com/photos/origomi/73209540/
//Extend jQuery
$.fn.foo = function() {};
$(function() {
//execute on
//page load
});
});
http://www.flickr.com/photos/origomi/73209540/
//Extend jQuery
$.fn.foo = function() {};
$(function() {
//cookie is a module that uses
//require.def() to define itself
var state = cookie.get(“state”);
});
Dependencies http://www.flickr.com/photos/jonathanvlarocca/443069768/
return {
get: function () {
//uses nameParser to do something
}
};
});
Modules http://www.flickr.com/photos/jonathanvlarocca/443069768/
• 3.7 KB Minified/Gzipped
> Smallest option 2.6 KB
> require-jquery.js 26.9 KB
• i18n/text plugins
http://www.flickr.com/photos/gentlepurespace/2366729959/
Sunday, April 25, 2010
Compare LABjs
• Different optimizations:
Download, do not execute vs
script combining
http://www.flickr.com/photos/gentlepurespace/2366729959/
Sunday, April 25, 2010
Compare CommonJS
http://www.flickr.com/photos/gentlepurespace/2366729959/
Sunday, April 25, 2010
jQuery++
• jQuery UI
• Built-in optimizer
http://www.flickr.com/photos/kelvin255/4487200368/
Sunday, April 25, 2010
MoMo is hiring!
• Messaging
• jQuery
• Web: HTML/JS/CSS
http://www.mozillamessaging.com/