Put JavaScript includes at the bottom of your page
I was reading the jQuery Cookbook yesterday to try and sharpen my JavaScript skills. Within the first chapter the book highlights something which I’ve never given much attention to – where in your page to include your JavaScript files. Here is an excerpt.
… modern optimization techniques have declared that pages load faster when the JavaScript is loaded by the browser at the end of a page parse. In other words, if you put JavaScript code at the bottom of a web page, then the browser will load everything in front of it before it loads the JavaScript. This is a good thing because most browsers will typically stop processing other loading initiatives until the JavaScript engine has compiled the JavaScript contained in a web page. It’s sort of a bottleneck in a sense that you have JavaScript at the top of a web page document.
So it’s basically a performance enhancement – your pages will load quicker due to your JavaScript includes being at the bottom of your page (just before the closing <body> element).
There’s another reason why it’s a good idea to do your JavaScript includes at the bottom of your page. I usually attach all my event handlers and initial function execution inside a ready() function, for example:
If we simply do all JavaScript includes at the bottom of the page this is no longer necessary – the DOM will be loaded by the time our JavaScript is executed. This means we can do away with the ready() function – less code is better. Small beans perhaps, but every little bit helps.
I realize that for some situations it’s easier to place JavaScript in the <head> element, but I can’t really think of a scenario where this is absolutely required. I actually think the ASP.NET MVC team should think about changing the default project templates to do the JavaScript includes at the bottom of the page, rather than in the <head> element.
Happy coding.