SPROCKET
     Optimizing Your JavaScript
 Using Fancy Concatenation Magic
SPROCKET
             Optimizing Your JavaScript
         Using Fancy Concatenation Magic



 this does not
  involve cats
THE PROBLEM
WHAT IS SPROCKETS?
USING IT
THE PROBLEM
WHAT IS SPROCKETS?
USING IT
Maintainability
Structure vs. Performance
Programmer Sanity
Maintainability
Structured and well organized code
Leads to programmer sanity




But there’s an inherent problem…
Structure vs. Performance




   Bigger Applications == More Files!
    Longer load times == Frustrated visitors
THE PROBLEM
WHAT IS SPROCKETS?
USING IT
Ruby Library
  that helps you to...
Turn messy JavaScript *



* otherwise known as zillions of files
Into clean modules for
development
And a single* file for
deployment




* Yes, really. Just the one. No, for real. That’s it. Would I lie to you?
IT’S AWESOME!
THE PROBLEM
WHAT IS SPROCKETS?
USING IT
Installing
It’s a Ruby Gem

You don’t need to know Ruby

But you do need to have Ruby and Ruby Gems installed
Using via Terminal
Using via Terminal




    Example Load Path
Dependencies



//=   require   "sqm"
//=   require   <sqm/admin>
//=   require   <sqm/utilities>
//=   require   <sqm/debugger>
//=   require   <sqm/tooltips>
//=   require   <sqm/lightbox>
//=   require   <sqm/controllers>
//=   require   <sqm/admin/utilities>
Dependencies



//=   require   "sqm"
//=   require   <sqm/admin>
//=   require   <sqm/utilities>
//=   require   <sqm/debugger>
//=   require   <sqm/tooltips>
//=   require   <sqm/lightbox>
//=   require   <sqm/controllers>
//=   require   <sqm/admin/utilities>
Dependencies

//= require <sqm/admin/controllers/versions/lightbox/case_benefit>
//= require <sqm/admin/controllers/versions/spreetabs>




                    //=   require   "sqm"
                    //=   require   <sqm/admin>
                    //=   require   <sqm/utilities>
                    //=   require   <sqm/debugger>
                    //=   require   <sqm/tooltips>
                    //=   require   <sqm/lightbox>
                    //=   require   <sqm/controllers>
                    //=   require   <sqm/admin/utilities>
Comments

// a private comment

/* a public comment */

/** a PDoc comment */
Other things it can do
Insert string constants with <%= %>
Bundle assets to create JS packages
Can run within Ruby code
Can be ran as a Rails plugin (sprocket-rails)
Or as a CGI script
Numbers!

                Non-Optimized   Optimized


    Size           344kb         204kb


HTTP Requests        26            1
Resources

                                I wrote it so that makes me awesome.




                            Sam Stephenson

http://getsprockets.org
http://github.com/sstephenson
http://github.com/sstephenson/sprockets-rails
Thank you!
tim.novinger@gmail.com
@timnovinger




Screaming Monkeys Web Guild   Tim Novinger
17 May 2010                    Squaremouth, Inc.

Sprockets