Vous êtes sur la page 1sur 102

Learning from the

Best jQuery Plugins


by Marc Grabanski
Created jQuery UI
Datepicker and watch it
grow like a weed
Made me very interested
in examining plugins projects
TONS of jQuery Plugins
Looked at 500+ plugins
and selected 30+ best
Picked plugins based on
what I use or what was
recommended
My BEST plugins list

jQuery Plugins Toolbox


http://marcgrabanski.com/jquery-plugins-toolbox/
What lessons can learn by
examining plugin projects?
http://benalman.com/projects/jquery-bbq-plugin/
Everything one click away
Focused on Community
“it started out as a little snippet of code
that almost every web developer, at one
point or another, has written..”
Ben Alman
Read Ben’s Story
http://benalman.com/news/2010/04/cooking-bbq-the-
original-recipe/
http://colorpowered.com/colorbox/
Themes
very customizable, 36 options
“I would make a selection based on how well it's
appearance fit the project at hand.”

Jack Moore
“..added it to the jQuery plugin repository and
make a post about it on Reddit.com. Bloggers
picked it up from there”
http://www.eyecon.ro/colorpicker/
Simple API,
great functionality, looks good
http://stilbuero.de/jquery/cookie
“jQuery itself lacked such functionality. cookie
handling is such a basic requirement”
Klaus Hartl
http://jquery.malsup.com/cycle/
“at this stage in its lifecycle it's less about adding
features and more about adding demos.”
Mike Alsup
tons of demos
commitment to community
http://www.filamentgroup.com/lab/
date_range_picker_using_jquery_ui_16_and_jquery_ui_css_framework/
mixes date picker with english
http://lab.smashup.it/flip/
“I built Flip after discovering that you can
create triangles/polygons by changing
border properties of an element”
Luca Manno
“people started downloading it and ask me for new
features/bug fixing”
http://jquery.malsup.com/form/
“early 2008 the form plugin initially
evolved as a collaborative effort
[through the mailing list].”
Mike Alsup
“The most notable feature addition I made was the
ability to support file uploads.”
“I really don't make an effort to spread the word about the
Form Plugin, it seems to thrive on its own.”
http://code.google.com/p/flot/
answers our burning
questions of browser support
right away
diverse demos shows versatility
“the existing open source Javascript
chart solutions were somewhat limited.
We specifically missed some interactive
features for a client”
Ole
“It is complicated. Really, you need to weigh the usefulness
of new features against the complexity they add.”
http://code.google.com/p/js-hotkeys/
http://digitalbush.com/projects/masked-input-plugin/
“I built this plugin just to scratch an itch. I
needed a masked input for a project I was
working on and I wasn't happy with the
current offerings”
Josh
“The only place I've ever really talked about it was on the
jQuery mailing list”
“Several people have submitted patches and bug
reports. When I see something that I feel like I
might use, then I'll implement it or roll a patch in.”
http://sorgalla.com/jcarousel/
DEMOS!
http://deepliquid.com/content/Jcrop.html
DEMOS!
“I originally built Jcrop because I had
searched for competing image cropping
plugins for jQuery and the offerings were
marginal.” Kelly Hallman
“I sent out a message to the jQuery mailing list and
sent messages inviting several high-profile web
development blogs.”
http://www.appelsiini.net/projects/jeditable
http://stanlemon.net/projects/jgrowl.html
DEMOS!
 “as a Mac user I was familiar with Growl and
decided that would serve as a good basis for what
we were trying to do.”
Stan Lemon
http://www.trirand.com/blog/jqgrid/jqgrid.html
Deep API and supporting
documentation
DEMOS!
“I started the idea when I needed an
easy way to represent database
information in my project.” Tony
“I really try to extract the
essence from the user requests.”
http://code.google.com/p/jquery-json/
http://www.jstree.com/
deep documentation and demos
“I decided to create a tree view after
spending countless hours in searching for a
tree that met all the requirements for a
web-based CMS I was creating” Ivan
http://layout.jquery-dev.net/
http://markitup.jaysalvat.com/home/
“I build it for my personal need. I needed
an simple editor which was not a bloated
WYSIWYG editor.”
Jay Salvat
http://plugins.jquery.com/project/metadata
http://code.google.com/p/noswfupload/
http://dev.herr-schuessler.de/jquery/popeye/
“I was really tired of seeing the same
lightbox modal windows”
“I wanted a gallery that could exist inline
with the content”
Christoph Schüßler
“I posted a link on dzone and on on digg.”
“I added a dedicated site and an account at
uservoice ... there are also many requests which I'm
not going to follow, as they deviated too much from
the original purpose of the plugin.”
http://razorjack.net/quicksand/
Partnered with a designer to
“create stunning demo & documentation website”
“I loved this effect on Mac apps”
“I don't like Flash”
“[I wanted to] do something cool and
share it with people.. give back”
Jack
“submitted the plugin to the jQuery website plugin
repository, and drop a message on the jQuery group.”
http://flesler.blogspot.com/2007/10/jqueryscrollto.html
“After reading Karl's article I realized
that was a pretty useful thing that I
needed myself”
Ariel Flesler
“I didn't do much really, I posted on jquery-en about
it, and kept doing that for major releases.”
“I tried filtering through the requests and rejecting
those features that seemed out of scope.”
http://www.fyneworks.com/jquery/star-rating/
http://tablesorter.com/docs/
http://haineault.com/media/jquery/ui-timepickr/page/
“Principally for fun and exploration purpose.”

“[there is a] universally accepted form and


behavior [of calendars] while there is no such
thing for a time picker.”
Maxime Haineault
“I posted a link on reddit and woke up the next
morning to see that my submission had taken off
quite well, enough to crash my VPS and down my
site overnight.”
“.. when other programmers send me patches, I
always commit them as soon as I can.”
“The most enriching part was probably learning
how to deal with many ‘willing’ contributors. I
learned that often hell is paved with good
intentions, but I also learned how to manage hell.”
http://bassistance.de/jquery-plugins/jquery-plugin-tooltip/
http://jqueryui.com/
ThemeRoller
http://pixelmatrixdesign.com/uniform/
http://www.uploadify.com/
http://bassistance.de/jquery-plugins/jquery-plugin-validation/
Demos
“The validation plugin is the only one
I've wrote from scratch, the others, like
Tooltip, Accordion and Autocomplete,
started with some code from someone
else, usually where someone abandoned
his plugin.”
Jörn
http://jquery.thewikies.com/swfobject/
plugin theme SONG
In Summary
Authors Build Plugins to..

• Make Something Better


• Fun / Exploration
• Client Needs it
It is tough to decide on features and
manage users’ feedback and patches.
The Best Plugins Have

• Great demos
• Documentation
• Browser Support / Testing
• Fun!
Questions?

Marc Grabanski:
http://marcgrabanski.com

User interface and web application


development.
Examples: http://mjgin.com/work.html

Twitter: http://twitter.com/1Marc
Email: m@marcgrabanski.com