SlideShare a Scribd company logo
JavaScript Libraries
   Ajax Experience - Oct 2006

     John Resig (ejohn.org)
Question: How do you want
   to write JavaScript?
1) Plug-and-Play

• Drop in a “calendar widget” or “tabbed
  navigation”
• Little, to no, JavaScript experience required.
• Just customize some options and go.
• No flexibility.
2) Some Assembly
         Required
• Write common utilities
 • Click a link, load a page via Ajax
 • Build a dynamic menu
 • Creating interactive forms
• Use pre-made code to distance yourself
  from browser bugs.
• Flexible, until you hit a browser bug.
3) Down-and-Dirty

• Write all JavaScript code from scratch
• Deal, directly, with browser bugs
• Quirksmode is your lifeline
• Excessively flexible, to the point of
  hinderance.
What we’ve just seen...

• Widgets
• Libraries
• Raw JavaScript
What we’ve just seen...

• Widgets
• Libraries
• Raw JavaScript
Why use a library?

• Makes JavaScript bearable
• Gets the job done fast
• Simplifies cross-browser support
• Sort of like C stdlib - no one just codes C
  by hand
What kind of libraries exist?
          Open Source   Commercial
                           Atlas
Client/    AjaxCFC
                        Backbase for
Server      Qcodo
                           Struts
           Prototype
             Dojo
Browser                  Backbase
            jQuery
 Only                   SmartClient
            Mochikit
           Yahoo UI
What kind of libraries exist?
          Open Source   Commercial
                           Atlas
Client/    AjaxCFC
                        Backbase for
Server      Qcodo
                           Struts
           Prototype
             Dojo
Browser                  Backbase
            jQuery
 Only                   SmartClient
            Mochikit
           Yahoo UI
Open Source Libraries
          Browser Only    Client/Server
          Scriptaculous
 Task                       AjaxCFC
             moo.fx
Specific                      Qcodo
           Open Rico
           Prototype
             Dojo
General                   Ruby on Rails
            jQuery
Purpose                    CakePHP
            Mochikit
           Yahoo UI
Open Source Libraries
          Browser Only    Client/Server
          Scriptaculous
 Task                       AjaxCFC
             moo.fx
Specific                      Qcodo
           Open Rico
           Prototype
             Dojo
General                   Ruby on Rails
            jQuery
Purpose                    CakePHP
            Mochikit
           Yahoo UI
What should a library have?


• DOM Traversing/Manipulation
• Event binding
• Ajax Support
• Basic Animations
What should a library have?
• Some want complex controls
 • Drag-and-drop
 • Auto-complete search
• Others want language enhancements
 • Object.extend()
 • Array.each()
• DOM, Event, Effects, Ajax is a good middle-
  ground
Secondary Features


• Documentation
• Community Support
• File Size
• Popularity
Secondary Features

                      (Practical)
• Documentation
• Community Support
• File Size
• Popularity          (Esoteric)
The Libraries
Dojo
Dojo: Overview

• Started early 2005 by Alex Russell
• Large development community
• Lots of corporate backing (IBM, AOL,
  Google)
• Big code base, tons of features
Dojo: Focus

• Building complete web applications
• A package heirarchy, e.g.:
  dojo.html.addClass( ... )
• Focus has transcended into widgets
• Huge number of features
Dojo: DOM Support
• Good DOM Modification support - handles
   many cross-browser issues
• DOM Traversal could be spruced up to
   handle selectors
 var each = dojo.lang.forEach;
 var tables = document.getElementsByTagName("table");
 each(tables, function(table){
   each(table.getElementsByTagName("tr"), function(row,i){
     if ( i % 2 == 1 )
       dojo.html.addClass( row, "odd" );
   });
 });
Dojo: Events and Effects
• Events support is complete and cross
   browser
• Good selection of generic animations
 var link = dojo.byId("mylink");
 dojo.event.connect(link, "onclick", myHandler);

 function myHandler(evt) {
   dojo.lfx.html.fadeHide( link, 500 );
 }
Dojo: Ajax
• Its crown jewel
• Supports virtually any form of Ajax
  communication that you can think of
• XMLHTTPRequest, IFrame, Flash
• Has excellent backwards compatability
• Built-in back button support
Dojo: Docs & Community


• Documentation: Not much.
  In the middle of a major documentation
  overhaul for 0.4.
• Community: Lively
  Over 60+ mailing list posts/day.
Dojo: File Size & Popularity

• File Size: Large (100Kb compressed)
  It’s highly recommended that you remove
  unused modules.
• Popularity: Substantial
  Backing from many corporate sponsors
  (IBM).
Prototype
Prototype: Overview

• Started early 2005 by Sam Stephenson
• Incredibly popular, tied with Ruby on Rails’
  popularity
• Development backed by 37 Signals
Prototype: Focus

• Improving the usability of the JavaScript
  language
• Big emphasis on adding in ‘missing’
  JavaScript features
• Clean structure, clean objects and ‘classes’
Prototype: DOM Support


• DOM Modification works quite well:
  Insertion.Bottom(“list”,”<li>Another item</li>”);

• So does >DOM Traversing:
  $$(“table tr”).invoke(“addClassName”,”row”);
Prototype: Events & Ajax
• Event binding just works: function(){
  Event.observe(“button”,”click”,
        alert(“Thanks for the click!”);
  });

• So does Ajax:
  new Ajax.Request(“test.html”, {
        method: “GET”,
        onComplete: function(res){
          alert( res.responseText );
        }
  });
Prototype: Details

• Code quality is fantastic, great features
• No support for animations
 • moo.fx
 • Script.aculo.us
• Updates are very infrequent (most recent
  release is over a year old)
Prototype: Docs & Community


• Documentation: None
  Some 3rd party web sites document some
  versions, no official documentation.
• Community: Distributed
  Many bloggers love Prototype, little
  centralized discussion (16 posts/day).
Prototype: File Size & Popularity


• File Size: Moderate (40KB)
  Unfortunately, not easily compressible.
• Popularity: Strong
  Constantly in use at major web sites - tied
  to popularity of Ruby on Rails.
jQuery
jQuery: Overview

• Released January 2006 by John Resig
• Rapid rise in popularity
• Many developers across the globe
jQuery: Focus

• Improving the interaction between
  JavaScript and HTML
• Finding elements then performing actions
• Highly-effective, short, code
jQuery: DOM Support

• DOM Traversing is great - CSS1-3 support
  and basic XPath:
  $(“div > p:nth-child(odd)”)
• DOM Manipulation too:
  $(“#li”).append(“<li>An item</li>”);
jQuery: Events, Effects, and Ajax

• Events are fully functional:
  $(“div”).click( showItem );
• And effects:
  $(“#menu”).slideDown(“slow”);
• And Ajax!
  $(“form”).submit(function(){
      $(“#results”).load(“test.html”);
  });
jQuery: Details

• Core features are limited to DOM, Events,
  Effects, Ajax
• Other features can be added in via plugins
• Relatively new, compared to other libraries
jQuery: Docs & Community


• Documentation: Complete
  Fully documented, complete API.
• Community: Vibrant
  91+ Mailing List Posts/Day
jQuery: File Size & Popularity

• File Size: Small
  About 16KB with everything.
• Popularity: Growing
  Little corporate backing.
  Lots of sites switching:
  Drupal, MSNBC, Technorati, FeedBurner.
Mochikit
Mochikit: Overview

• Released July 2005 by Bob Ippolito
• Managed and sponsored by MochiMedia
• Developed to power their Mochibot web
  site
Mochikit: Focus

• Designed to fulfill common activities (All
  the way from low-level iteration to high-
  level Drag-and-Drop)
• Hierarchical structure:
  Mochikit.DOM.addElementClass(...)
Mochikit: DOM Support

• Only a couple DOM Traversal functions -
  no selectors (possibly coming in 1.4):
  $(“body”)
• Plenty of helper functions for DOM
  modification:
  A({href: "test.html"}, "Test Page");
  removeElementClass(“item”, “hilite”);
Mochikit: Events and Effects

• Event structure uses signals & slots
  terminology:
  connect(“list”,”click”, function(){
      alert(“List Clicked”);
  });
• Plenty of visual effects too:
  blindDown(“list”, { duration: 0.5 });
Mochikit: Ajax


• Ajax support is fully functional:
  doSimpleXMLHttpRequest("http://example.com", {bar: "baz"});
Mochikit: Details

• Lots of features (Rounded corners, drag-
  and-drop) - much like Dojo
• Been a while since the last official update
  (April 2006)
Mochikit: Docs & Community


• Documentation: Mixed
  Everything is physically documented, but
  the quality is mixed (e.g: blindDown: Blind
  an element down, restoring its vertical size)
• Community: Small
  About 6 mailing list posts/day
Mochikit: File Size & Popularity


• File Size: Large (100KB, compressed)
  It is recommended that you remove unused
  components and re-compress the code.
• Popularity: Stagnant
  After almost a year and a half of existence,
  popularity has yet to surge.
Yahoo! UI
YUI: Overview

• Released Feb 2006 by Yahoo!
• Maintained and financed internally
• Attempt to standardize internal JavaScript
YUI: Focus

• Exposing, and solving, common
  methodologies
• Looking for common idioms (Drag-and-
  Drop, Calendar, Auto-Complete)
YUI: DOM Support

• DOM Traversal is minimal, no selectors:
  YAHOO.util.Dom.get(“list”)
• DOM Modification is also minimal,
  modification only (no DOM creation):
  YAHOO.util.Dom.addClass(“list”,”hover”)
YUI: Events and Effects
• Full Event support:
  YAHOO.util.Event.addEventListener(
        “list”, “click”, function(){
            alert(“List Clicked”);
        });

• Animations are also customizable:
  new YAHOO.util.Anim(“list”,
        { width: { from: 10, to: 100 } }, 1,
        YAHOO.util.Easing.easeOut
   );
YUI: Ajax

• Ajax connections are simple to setup:
  YAHOO.util.Connect.asyncRequest(
       'GET', “test.html”, function(){
           alert(“File loaded”);
       }, null
  );
YUI: Details

• Namespaces can become quite verbose. It
  is recommended that you copy namespaces
  to other variables.
  var dom = YAHOO.util.Dom;
• Closed development (Yahoo employees
  only, no subversion repository)
YUI: Docs & Community


• Documentation: Excellent
  Everything is thoroughly documented. Lots
  of explanations, plenty of demos.
• Community: Moderate
  Mailing List hovering around 28 posts/day.
YUI: File Size & Popularity


• File Size: 40KB (Compressed)
  Code is quite modular, you can remove un-
  used code easily.
• Popularity: Moderate
  Many good bloggers talking about it.
Feature Summary
            DOM Events   Effects   Ajax
  Dojo       /     X        /       X
Prototype    X     X        -       X
 jQuery      X     X       X        X
Mochikit     /     X       X        X

Yahoo UI     /     X       X        X
More Information

• Dojo: http://dojotoolkit.org/
• Prototype: http://prototype.conio.net/
• jQuery: http://jquery.com/
• Mochikit: http://mochikit.com/
• Yahoo! UI: http://developer.yahoo.com/yui/
Ajax Experience
      Presentations
• Presentations on:
 • Dojo
 • Prototype & Scriptaculous
 • jQuery
 • Yahoo UI
• Go to one that sounds interesting and
  enjoy!

More Related Content

KEY
MozTW Jetpack Workshop: Taipei
PPTX
Drupal Skils Lab 302Labs
PDF
Drupal 7
PDF
Drupal In 1 Hour
PDF
Evolution of Drupal and the Drupal community
PPT
Google Dev Day2007
PPTX
Top 8 Improvements in Drupal 8
KEY
Dojo & HTML5
MozTW Jetpack Workshop: Taipei
Drupal Skils Lab 302Labs
Drupal 7
Drupal In 1 Hour
Evolution of Drupal and the Drupal community
Google Dev Day2007
Top 8 Improvements in Drupal 8
Dojo & HTML5

What's hot (20)

PPT
HTML5: An Introduction To Next Generation Web Development
PPT
Intro to drupal
PPTX
XPages and Java (DanNotes 50th conference, November 2013)
PDF
JavaScript debugging diagnostic web tools and firefox
PDF
From Java to Ruby...and Back
PDF
Dojo (QCon 2007 Slides)
PPTX
One Drupal to rule them all - Drupalcamp London
PDF
jQuery Comes to XPages
PDF
Apcug 2011 07-17-intro_to_drupal_jeff_schuler
PDF
jQuery: The World's Most Popular JavaScript Library Comes to XPages
PPT
Building intranet applications with ASP.NET AJAX and jQuery
KEY
Introduction to Drupal
PPTX
jQuery - the world's most popular java script library comes to XPages
PDF
My site is slow
PDF
Oxford DrupalCamp 2012 - The things we found in your website
PDF
HTML5, are we there yet?
PPT
Introducing the New DSpace User Interface
PPTX
Drupal architectures for flexible content - Drupalcon Barcelona
PDF
Apache Cordova 4.x
PDF
Node.js
HTML5: An Introduction To Next Generation Web Development
Intro to drupal
XPages and Java (DanNotes 50th conference, November 2013)
JavaScript debugging diagnostic web tools and firefox
From Java to Ruby...and Back
Dojo (QCon 2007 Slides)
One Drupal to rule them all - Drupalcamp London
jQuery Comes to XPages
Apcug 2011 07-17-intro_to_drupal_jeff_schuler
jQuery: The World's Most Popular JavaScript Library Comes to XPages
Building intranet applications with ASP.NET AJAX and jQuery
Introduction to Drupal
jQuery - the world's most popular java script library comes to XPages
My site is slow
Oxford DrupalCamp 2012 - The things we found in your website
HTML5, are we there yet?
Introducing the New DSpace User Interface
Drupal architectures for flexible content - Drupalcon Barcelona
Apache Cordova 4.x
Node.js
Ad

Viewers also liked (8)

PDF
jQuery Internals + Cool Stuff
PDF
Processing and Processing.js
PDF
JavaScript Libraries (Kings of Code)
PDF
Testing Mobile JavaScript (Fall 2010
PDF
Secrets of JavaScript Libraries
PDF
Khan Academy Computer Science
PDF
Building a JavaScript Library
PDF
Understanding JavaScript Testing
jQuery Internals + Cool Stuff
Processing and Processing.js
JavaScript Libraries (Kings of Code)
Testing Mobile JavaScript (Fall 2010
Secrets of JavaScript Libraries
Khan Academy Computer Science
Building a JavaScript Library
Understanding JavaScript Testing
Ad

Similar to JavaScript Libraries (Ajax Exp 2006) (20)

PDF
JavaScript Library Overview (Ajax Exp West 2007)
PDF
JavaScript Library Overview
PDF
JavaScript Libraries (@Media)
PDF
JavaScript Library Overview
PDF
Ajax tutorial
PDF
How to make Ajax Libraries work for you
PDF
JavaScript Libraries: The Big Picture
PDF
Ajax Tutorial
PDF
Building Real-World Dojo Web Applications
PDF
JavascriptMVC: Another choice of web framework
PPTX
CT presentatie JQuery 7.12.11
PPS
AJAX Frameworks
PPTX
Evolution of java script libraries
KEY
10 Years of JavaScript
PDF
Introduction to AJAX
PDF
Prototype-1
PDF
Prototype-1
PDF
Advancing JavaScript with Libraries (Yahoo Tech Talk)
PDF
State of jQuery '08
PDF
Server Side Javascript
JavaScript Library Overview (Ajax Exp West 2007)
JavaScript Library Overview
JavaScript Libraries (@Media)
JavaScript Library Overview
Ajax tutorial
How to make Ajax Libraries work for you
JavaScript Libraries: The Big Picture
Ajax Tutorial
Building Real-World Dojo Web Applications
JavascriptMVC: Another choice of web framework
CT presentatie JQuery 7.12.11
AJAX Frameworks
Evolution of java script libraries
10 Years of JavaScript
Introduction to AJAX
Prototype-1
Prototype-1
Advancing JavaScript with Libraries (Yahoo Tech Talk)
State of jQuery '08
Server Side Javascript

More from jeresig (20)

PDF
Does Coding Every Day Matter?
PDF
Accidentally Becoming a Digital Librarian
PDF
2014: John's Favorite Thing (Neo4j)
PDF
Computer Vision as Art Historical Investigation
PDF
Hacking Art History
PDF
Using JS to teach JS at Khan Academy
PDF
Applying Computer Vision to Art History
PDF
NYARC 2014: Frick/Zeri Results
PDF
EmpireJS: Hacking Art with Node js and Image Analysis
PDF
Applying Computer Vision to Art History
PDF
Introduction to jQuery (Ajax Exp 2006)
PDF
jQuery Recommendations to the W3C (2011)
PDF
jQuery Open Source Process (RIT 2011)
PDF
jQuery Open Source Process (Knight Foundation 2011)
PDF
jQuery Mobile
PDF
jQuery Open Source (Fronteer 2011)
PDF
Holistic JavaScript Performance
PDF
New Features Coming in Browsers (RIT '09)
PDF
Introduction to jQuery (Ajax Exp 2007)
PDF
Advanced jQuery (Ajax Exp 2007)
Does Coding Every Day Matter?
Accidentally Becoming a Digital Librarian
2014: John's Favorite Thing (Neo4j)
Computer Vision as Art Historical Investigation
Hacking Art History
Using JS to teach JS at Khan Academy
Applying Computer Vision to Art History
NYARC 2014: Frick/Zeri Results
EmpireJS: Hacking Art with Node js and Image Analysis
Applying Computer Vision to Art History
Introduction to jQuery (Ajax Exp 2006)
jQuery Recommendations to the W3C (2011)
jQuery Open Source Process (RIT 2011)
jQuery Open Source Process (Knight Foundation 2011)
jQuery Mobile
jQuery Open Source (Fronteer 2011)
Holistic JavaScript Performance
New Features Coming in Browsers (RIT '09)
Introduction to jQuery (Ajax Exp 2007)
Advanced jQuery (Ajax Exp 2007)

Recently uploaded (20)

PDF
Diabetes mellitus diagnosis method based random forest with bat algorithm
PDF
Advanced methodologies resolving dimensionality complications for autism neur...
PDF
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
PPTX
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...
PDF
Dropbox Q2 2025 Financial Results & Investor Presentation
PDF
Encapsulation theory and applications.pdf
PPTX
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
PDF
Network Security Unit 5.pdf for BCA BBA.
PDF
Agricultural_Statistics_at_a_Glance_2022_0.pdf
PDF
Electronic commerce courselecture one. Pdf
DOCX
The AUB Centre for AI in Media Proposal.docx
PDF
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
PDF
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
PDF
Building Integrated photovoltaic BIPV_UPV.pdf
PDF
Mobile App Security Testing_ A Comprehensive Guide.pdf
PDF
Review of recent advances in non-invasive hemoglobin estimation
PPTX
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
PDF
Empathic Computing: Creating Shared Understanding
PDF
Shreyas Phanse Resume: Experienced Backend Engineer | Java • Spring Boot • Ka...
PDF
Encapsulation_ Review paper, used for researhc scholars
Diabetes mellitus diagnosis method based random forest with bat algorithm
Advanced methodologies resolving dimensionality complications for autism neur...
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...
Dropbox Q2 2025 Financial Results & Investor Presentation
Encapsulation theory and applications.pdf
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
Network Security Unit 5.pdf for BCA BBA.
Agricultural_Statistics_at_a_Glance_2022_0.pdf
Electronic commerce courselecture one. Pdf
The AUB Centre for AI in Media Proposal.docx
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
Building Integrated photovoltaic BIPV_UPV.pdf
Mobile App Security Testing_ A Comprehensive Guide.pdf
Review of recent advances in non-invasive hemoglobin estimation
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
Empathic Computing: Creating Shared Understanding
Shreyas Phanse Resume: Experienced Backend Engineer | Java • Spring Boot • Ka...
Encapsulation_ Review paper, used for researhc scholars

JavaScript Libraries (Ajax Exp 2006)

  • 1. JavaScript Libraries Ajax Experience - Oct 2006 John Resig (ejohn.org)
  • 2. Question: How do you want to write JavaScript?
  • 3. 1) Plug-and-Play • Drop in a “calendar widget” or “tabbed navigation” • Little, to no, JavaScript experience required. • Just customize some options and go. • No flexibility.
  • 4. 2) Some Assembly Required • Write common utilities • Click a link, load a page via Ajax • Build a dynamic menu • Creating interactive forms • Use pre-made code to distance yourself from browser bugs. • Flexible, until you hit a browser bug.
  • 5. 3) Down-and-Dirty • Write all JavaScript code from scratch • Deal, directly, with browser bugs • Quirksmode is your lifeline • Excessively flexible, to the point of hinderance.
  • 6. What we’ve just seen... • Widgets • Libraries • Raw JavaScript
  • 7. What we’ve just seen... • Widgets • Libraries • Raw JavaScript
  • 8. Why use a library? • Makes JavaScript bearable • Gets the job done fast • Simplifies cross-browser support • Sort of like C stdlib - no one just codes C by hand
  • 9. What kind of libraries exist? Open Source Commercial Atlas Client/ AjaxCFC Backbase for Server Qcodo Struts Prototype Dojo Browser Backbase jQuery Only SmartClient Mochikit Yahoo UI
  • 10. What kind of libraries exist? Open Source Commercial Atlas Client/ AjaxCFC Backbase for Server Qcodo Struts Prototype Dojo Browser Backbase jQuery Only SmartClient Mochikit Yahoo UI
  • 11. Open Source Libraries Browser Only Client/Server Scriptaculous Task AjaxCFC moo.fx Specific Qcodo Open Rico Prototype Dojo General Ruby on Rails jQuery Purpose CakePHP Mochikit Yahoo UI
  • 12. Open Source Libraries Browser Only Client/Server Scriptaculous Task AjaxCFC moo.fx Specific Qcodo Open Rico Prototype Dojo General Ruby on Rails jQuery Purpose CakePHP Mochikit Yahoo UI
  • 13. What should a library have? • DOM Traversing/Manipulation • Event binding • Ajax Support • Basic Animations
  • 14. What should a library have? • Some want complex controls • Drag-and-drop • Auto-complete search • Others want language enhancements • Object.extend() • Array.each() • DOM, Event, Effects, Ajax is a good middle- ground
  • 15. Secondary Features • Documentation • Community Support • File Size • Popularity
  • 16. Secondary Features (Practical) • Documentation • Community Support • File Size • Popularity (Esoteric)
  • 18. Dojo
  • 19. Dojo: Overview • Started early 2005 by Alex Russell • Large development community • Lots of corporate backing (IBM, AOL, Google) • Big code base, tons of features
  • 20. Dojo: Focus • Building complete web applications • A package heirarchy, e.g.: dojo.html.addClass( ... ) • Focus has transcended into widgets • Huge number of features
  • 21. Dojo: DOM Support • Good DOM Modification support - handles many cross-browser issues • DOM Traversal could be spruced up to handle selectors var each = dojo.lang.forEach; var tables = document.getElementsByTagName("table"); each(tables, function(table){ each(table.getElementsByTagName("tr"), function(row,i){ if ( i % 2 == 1 ) dojo.html.addClass( row, "odd" ); }); });
  • 22. Dojo: Events and Effects • Events support is complete and cross browser • Good selection of generic animations var link = dojo.byId("mylink"); dojo.event.connect(link, "onclick", myHandler); function myHandler(evt) { dojo.lfx.html.fadeHide( link, 500 ); }
  • 23. Dojo: Ajax • Its crown jewel • Supports virtually any form of Ajax communication that you can think of • XMLHTTPRequest, IFrame, Flash • Has excellent backwards compatability • Built-in back button support
  • 24. Dojo: Docs & Community • Documentation: Not much. In the middle of a major documentation overhaul for 0.4. • Community: Lively Over 60+ mailing list posts/day.
  • 25. Dojo: File Size & Popularity • File Size: Large (100Kb compressed) It’s highly recommended that you remove unused modules. • Popularity: Substantial Backing from many corporate sponsors (IBM).
  • 27. Prototype: Overview • Started early 2005 by Sam Stephenson • Incredibly popular, tied with Ruby on Rails’ popularity • Development backed by 37 Signals
  • 28. Prototype: Focus • Improving the usability of the JavaScript language • Big emphasis on adding in ‘missing’ JavaScript features • Clean structure, clean objects and ‘classes’
  • 29. Prototype: DOM Support • DOM Modification works quite well: Insertion.Bottom(“list”,”<li>Another item</li>”); • So does >DOM Traversing: $$(“table tr”).invoke(“addClassName”,”row”);
  • 30. Prototype: Events & Ajax • Event binding just works: function(){ Event.observe(“button”,”click”, alert(“Thanks for the click!”); }); • So does Ajax: new Ajax.Request(“test.html”, { method: “GET”, onComplete: function(res){ alert( res.responseText ); } });
  • 31. Prototype: Details • Code quality is fantastic, great features • No support for animations • moo.fx • Script.aculo.us • Updates are very infrequent (most recent release is over a year old)
  • 32. Prototype: Docs & Community • Documentation: None Some 3rd party web sites document some versions, no official documentation. • Community: Distributed Many bloggers love Prototype, little centralized discussion (16 posts/day).
  • 33. Prototype: File Size & Popularity • File Size: Moderate (40KB) Unfortunately, not easily compressible. • Popularity: Strong Constantly in use at major web sites - tied to popularity of Ruby on Rails.
  • 35. jQuery: Overview • Released January 2006 by John Resig • Rapid rise in popularity • Many developers across the globe
  • 36. jQuery: Focus • Improving the interaction between JavaScript and HTML • Finding elements then performing actions • Highly-effective, short, code
  • 37. jQuery: DOM Support • DOM Traversing is great - CSS1-3 support and basic XPath: $(“div > p:nth-child(odd)”) • DOM Manipulation too: $(“#li”).append(“<li>An item</li>”);
  • 38. jQuery: Events, Effects, and Ajax • Events are fully functional: $(“div”).click( showItem ); • And effects: $(“#menu”).slideDown(“slow”); • And Ajax! $(“form”).submit(function(){ $(“#results”).load(“test.html”); });
  • 39. jQuery: Details • Core features are limited to DOM, Events, Effects, Ajax • Other features can be added in via plugins • Relatively new, compared to other libraries
  • 40. jQuery: Docs & Community • Documentation: Complete Fully documented, complete API. • Community: Vibrant 91+ Mailing List Posts/Day
  • 41. jQuery: File Size & Popularity • File Size: Small About 16KB with everything. • Popularity: Growing Little corporate backing. Lots of sites switching: Drupal, MSNBC, Technorati, FeedBurner.
  • 43. Mochikit: Overview • Released July 2005 by Bob Ippolito • Managed and sponsored by MochiMedia • Developed to power their Mochibot web site
  • 44. Mochikit: Focus • Designed to fulfill common activities (All the way from low-level iteration to high- level Drag-and-Drop) • Hierarchical structure: Mochikit.DOM.addElementClass(...)
  • 45. Mochikit: DOM Support • Only a couple DOM Traversal functions - no selectors (possibly coming in 1.4): $(“body”) • Plenty of helper functions for DOM modification: A({href: "test.html"}, "Test Page"); removeElementClass(“item”, “hilite”);
  • 46. Mochikit: Events and Effects • Event structure uses signals & slots terminology: connect(“list”,”click”, function(){ alert(“List Clicked”); }); • Plenty of visual effects too: blindDown(“list”, { duration: 0.5 });
  • 47. Mochikit: Ajax • Ajax support is fully functional: doSimpleXMLHttpRequest("http://example.com", {bar: "baz"});
  • 48. Mochikit: Details • Lots of features (Rounded corners, drag- and-drop) - much like Dojo • Been a while since the last official update (April 2006)
  • 49. Mochikit: Docs & Community • Documentation: Mixed Everything is physically documented, but the quality is mixed (e.g: blindDown: Blind an element down, restoring its vertical size) • Community: Small About 6 mailing list posts/day
  • 50. Mochikit: File Size & Popularity • File Size: Large (100KB, compressed) It is recommended that you remove unused components and re-compress the code. • Popularity: Stagnant After almost a year and a half of existence, popularity has yet to surge.
  • 52. YUI: Overview • Released Feb 2006 by Yahoo! • Maintained and financed internally • Attempt to standardize internal JavaScript
  • 53. YUI: Focus • Exposing, and solving, common methodologies • Looking for common idioms (Drag-and- Drop, Calendar, Auto-Complete)
  • 54. YUI: DOM Support • DOM Traversal is minimal, no selectors: YAHOO.util.Dom.get(“list”) • DOM Modification is also minimal, modification only (no DOM creation): YAHOO.util.Dom.addClass(“list”,”hover”)
  • 55. YUI: Events and Effects • Full Event support: YAHOO.util.Event.addEventListener( “list”, “click”, function(){ alert(“List Clicked”); }); • Animations are also customizable: new YAHOO.util.Anim(“list”, { width: { from: 10, to: 100 } }, 1, YAHOO.util.Easing.easeOut );
  • 56. YUI: Ajax • Ajax connections are simple to setup: YAHOO.util.Connect.asyncRequest( 'GET', “test.html”, function(){ alert(“File loaded”); }, null );
  • 57. YUI: Details • Namespaces can become quite verbose. It is recommended that you copy namespaces to other variables. var dom = YAHOO.util.Dom; • Closed development (Yahoo employees only, no subversion repository)
  • 58. YUI: Docs & Community • Documentation: Excellent Everything is thoroughly documented. Lots of explanations, plenty of demos. • Community: Moderate Mailing List hovering around 28 posts/day.
  • 59. YUI: File Size & Popularity • File Size: 40KB (Compressed) Code is quite modular, you can remove un- used code easily. • Popularity: Moderate Many good bloggers talking about it.
  • 60. Feature Summary DOM Events Effects Ajax Dojo / X / X Prototype X X - X jQuery X X X X Mochikit / X X X Yahoo UI / X X X
  • 61. More Information • Dojo: http://dojotoolkit.org/ • Prototype: http://prototype.conio.net/ • jQuery: http://jquery.com/ • Mochikit: http://mochikit.com/ • Yahoo! UI: http://developer.yahoo.com/yui/
  • 62. Ajax Experience Presentations • Presentations on: • Dojo • Prototype & Scriptaculous • jQuery • Yahoo UI • Go to one that sounds interesting and enjoy!