Parallel script loading for improved page load
headjs.com
headjs.com
<script defer async src="blah"></script>
for purists <script defer="defer" async="async" src="blah"></script>The two most popular browsers support ASYNC going back to versions from September 2010, Chrome 11+ and Firefox 3.6+
- you don't have to put tons of <script> tag on your template. just pass the parameters to headjs*
- you can load js files and "after" run some function and this function hasn't have to be in another js file or document.ready(). you can do this operations any time after full page load.
* Ok, i know : one should compress and merge javascript files..
HeadJS [per the link above] - [only a little dev in recent days]
LabJS - http://labjs.com/ [seems litte more active dev]
RequireJS - http://requirejs.org/ [most active dev]
HeadJS dev seems a little on the light side [ala none - see GitHub for each] ? Anyone have any experience with Lab or Require ?
var ga = document.createElement('script');
ga.type = 'text/javascript'; ga.async = true;
ga.src = 'http://www.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0];
s.parentNode.insertBefore(ga, s);From what I have seen, the functionality of head.js looks like a subset of lab.js. Lab.js has a richer API with queueing and waiting. Require.js is a whole different beast - it revolves around the definition of modules (module pattern) and the scripts required to pull down to organize modules. There are a lot of tools in require.js that help with ordering the execution of loaded scripts, pulling down files as text (can't do this in lab.js), and optimizing (compiling modules into one big uglified file).
They are all good tools, but different - pick the best one suited for your project.
We verified this at our company (we don't like it our site goes down together with google :) ), and it works pretty good. I would advocate headjs to load itself with it though and inline that piece of jscript
https://spreadsheets.google.com/ccc?key=0Aqln2akPWiMIdERkY3J...
Edit: All of the loaders can apparently load in parallel.