jQueryTO: State of jQuery March 2013
Upcoming SlideShare
Loading in...5
×
 

jQueryTO: State of jQuery March 2013

on

  • 1,181 views

 

Statistics

Views

Total Views
1,181
Views on SlideShare
1,164
Embed Views
17

Actions

Likes
4
Downloads
5
Comments
0

1 Embed 17

https://twitter.com 17

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

jQueryTO: State of jQuery March 2013 jQueryTO: State of jQuery March 2013 Presentation Transcript

  • The State of jQuery Dave Methvin President, jQuery Foundation March, 2013
  • How It All StartedJan 2006: The birth of jQuery
  • Seven Years of Good LuckFeb 2013: jQuery core is used by 64 percent of the top 10,000 sites
  • The jQuery Foundation• Created in March 2012
  • The jQuery Foundation• Created in March 2012
  • The jQuery Foundation• Created in March 2012• Coordinates the work of jQuery team members and volunteers
  • The jQuery Foundation Is...• A non-profit organization o Volunteer board of directors o Volunteer president (thats me) o A few paid staff, mainly devs/ops• Funded by o Conferences o Donations – http://jquery.org/donate o Memberships o YOU or your company can be a member  http://jquery.org/join
  • jQuery Foundation• Founding Members
  • jQuery Foundation• Gold Members
  • The jQuery Foundations Work• Organize/fund work on the projects• Advocate for web developer needs o W3C web standards o ECMA TC39 JavaScript standards• Run two US conferences annually• License conferences worldwide
  • jQuery Foundation Projects• http://github.com/jquery • jQuery Core • jQuery UI • jQuery Mobile • Sizzle selector engine • QUnit unit test framework • jQuery Migrate plugin • TestSwarm CI testing • Documentation sites
  • Join The Community• It’s all on Github – not just the code• File an issue when you see a problem• Make pull requests against docs• Join our forum and share knowledge
  • The jQuery Core Library Plan• jQuery 1.9 vs. 2.0 o jQuery 1.x still supports IE 6/7/8 o jQuery 2.x supports modern browsers o The two versions stay in API sync o Both branches maintained by the team• Heavily publicized changes during 2012• Released several public betas• Shipped jQuery 1.9 in January
  • What We Learned (the Hard Way)Far too many peopleare using "latest"versions in live sites!NEVER HOTLINK:http://code.jquery.com/jquery-latest.jshttp://ajax.googleapis.com/ajax/libs/jquery/1/jquery.js
  • jQuery 1.9: Users Love It!
  • jQuery Migrate Plugin• Identifies things your code is doing that jQuery 1.9/2.0 dont support anymore• Actually changes jQuery back to pre-1.9 behavior so older code just works• Lets you use jQuery 1.9/2.0 with code that hasnt been upgraded yet• Documentation gives advice on how to remediate the issue
  • jQuery Migrate Example
  • jQuery Migrate Warnings• Shown in the uncompressed version• Problem and solutions documented
  • How Do I Fix This?
  • Shut-Up-and-Fix-It ModeInclude the minified version of the plugin and no warnings appear
  • What We Broke Fixed, and Why• Removed $.browser• Removed .live()• Fixed $.parseJSON
  • Why $.browser Deserves To Go• Usually the wrong inference• Often assumes future browsers and versions will be broken the same way• Horribly misused and misunderstood
  • Why You Dont Assume BrowsersChrome added focusin/out two years ago!
  • Browser Name is Only a BRANDOpera just announced their future products will be based on the WebKit engine, not their own Presto engine.
  • Internet Explorers Disguises• IE can emulate older versions via <meta name="X-UA-Compatible“ …>• Can be accidentally lobotomized via that confounded Address Bar button• Browser version in the UA string does not represent the real version The Enemy!
  • Who Else Used $.browser?
  • Who Else Used $.browser?
  • Please Dont Do This ...
  • ... copy/pasta is bad!Not fixing the problem, no code attribution
  • ... copy/pasta is bad!Use jQuery Migrate or (better) Modernizr!
  • Whats Wrong With .live()?• Its like global variables, but for events• Every event that occurs must bubble to document before it can be processed• Processing events can be expensive, especially on deep documents• Still easy to process events globally: o $(document).on("click", "a", linkyClicky);
  • Whats Wrong With .live()?• Doesnt work well on iPhone/iPad!• iOS doesnt bubble touch events all the way to document• Delegated touch events must be processed below the <body> element Letting all events bubble to document destroys the usefulness of the event propagation model
  • Optimize Your SelectorsOriginal line:$(".dialog .close").live("click", ...Direct replacement (poor):$(document).on("click", ".dialog .close" ...Optimized replacement:$(".dialog").on("click", ".close", ...
  • JSON Should Be JSONThe Bug:• Before 1.9, $.parseJSON("") returned null but its not valid JSONThe Fix:• In 1.9, $.parseJSON("") is an error
  • The Result: PANIC• We called invalid JSON invalid.• Were also out of coffee.
  • The Moral of the StoryIn jQuery, every change is a breaking change for some poor developer.
  • The Other Moral of the StoryNobody tries the jQuery alpha and beta builds.
  • Big News!• How Big?
  • Big News!• How Big?
  • Big News: jQuery 2.0 Beta 2• Released yesterday -- please try it!• Custom builds can shrink size• Bare-bones selector engine option o Basically, just querySelectorAll• How small? o Normal build: 28KB minified and gzipped o Blog example: 17KB o Tiniest build: 14KB
  • jQuery 2.0: README.NOW Making a public web site? You dont need 2.0 right now!jQuery 2.0 is a good fit for:• Chrome or Firefox plugins• node.js apps (jsdom, Cheerio)• Windows 8 Store ("Modern/Metro") apps• PhoneGap (iPhone/Android/BlackBerry)• Apps using UIWebKit or WebBrowser
  • jQuery 2.0 is Forward Looking• The jQuery team supports both 1.9 and 2.0; there isnt a problem of using an "unsupported version"• Since 1.x/2.x APIs are the same, there is no problem in using 1.x exclusively on a public web site -- its recommended• You can detect platforms and include 1.9 or 2.0, but beware of your code or plugins using undocumented semantics!
  • Old Android Browsers Lack ES5EcmaScript 5 is was the 2.0 baseline (-: :-(
  • Old WebKit is the New Old IE
  • Questions?Email: dave@jquery.comTwitter: @davemethvinGitHub: @dmethvinIRC (Freenode): DaveMethvin #jquery-dev