I know that there are ways to dynamically load it into the page, but if I want to compress my code so it loads even faster, how do I do it?
9 Answers
I highly recommend Google Closure Compiler for compressing JavaScript code. I use it personally, and it is also the official compressor used by the jQuery project.
This project can do quite a lot, but the basics are this:
java -jar closure.jar -js javascriptFile.js > javascriptFile.min.js
-
+1 great answer. Do note that google closure, besides compressing more than yui compressor, also detects common javascript errors such as
{1,2,3,}
which will completely destroy your website on a "certain browser" (yeah, what other browser could possibly be so stupid??) Commented Jul 8, 2010 at 23:35
Use gzip.
-
You can gzip HTML files, JavaScript, CSS, as well as any text response (XML/JSON). This will lower the response size, which can increase the speed of your website. Commented Jul 8, 2010 at 23:13
I use Justin Etheredge's SquishIt project. It is awesome! For asp.net only however.
- It uses YUI for CSS and Javascript compression.
- It supports LESS
- I believe it supports Google Closure
- It is ridiculously easy to use.
Read the intro to squishit blog post.
Here's some sample code that will render a single <script>
tag and a single <link>
tag. Both of which will point to a combined and minified JS/CSS file.
<%= Bundle.JavaScript()
.Add("~/js/jquery-1.4.2.js")
.Add("~/js/jquery-ui-1.8.1.js")
.Render("~/js/combined_#.js")
%>
<%= Bundle.Css()
.Add("~/css/reset.css")
.Add("~/css/text.css")
.Add("~/css/960.css")
.Render("~/css/combined_#.css")
%>
There are several very popular tools for compressing/minifying your JavaScript and CSS.
- Yahoo YUI Compressor
- Microsoft AJAX Minifier
- Google Closure Compiler (JavaScript-only)
All are very powerful -- you can find comparisons of them quite easily. All are command line tools, so they can be easily integrated into your run automatically when you build or publish your website.
You can also find many websites that run these tool for you, which will save you the time of having to install/configure. This also helps if you aren't familiar with using command line tools.
Personally, I've always used YUI Compressor.
Add all your javascript to a single file and compress it with for example jsmin(http://www.crockford.com/javascript/jsmin.html). Do this as well for your CSS but use another compression technique (removing whitespace). Since this is a boring repeating task there are scripts available that will do just this for you. I use Django and use django-assets to fully automate this process.
Check this comparison of JS & CSS minifiers to pick what suits you best -