SlideShare uma empresa Scribd logo
1 de 62
Baixar para ler offline
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!

Mais conteúdo relacionado

Mais procurados

HTML5: An Introduction To Next Generation Web Development
HTML5: An Introduction To Next Generation Web DevelopmentHTML5: An Introduction To Next Generation Web Development
HTML5: An Introduction To Next Generation Web DevelopmentTilak Joshi
 
Intro to drupal
Intro to drupalIntro to drupal
Intro to drupalhernanibf
 
XPages and Java (DanNotes 50th conference, November 2013)
XPages and Java (DanNotes 50th conference, November 2013)XPages and Java (DanNotes 50th conference, November 2013)
XPages and Java (DanNotes 50th conference, November 2013)Per Henrik Lausten
 
JavaScript debugging diagnostic web tools and firefox
JavaScript debugging diagnostic web tools and firefoxJavaScript debugging diagnostic web tools and firefox
JavaScript debugging diagnostic web tools and firefoxGennady Feldman
 
From Java to Ruby...and Back
From Java to Ruby...and BackFrom Java to Ruby...and Back
From Java to Ruby...and BackAnil Hemrajani
 
One Drupal to rule them all - Drupalcamp London
One Drupal to rule them all - Drupalcamp LondonOne Drupal to rule them all - Drupalcamp London
One Drupal to rule them all - Drupalcamp Londonhernanibf
 
jQuery Comes to XPages
jQuery Comes to XPagesjQuery Comes to XPages
jQuery Comes to XPagesTeamstudio
 
Apcug 2011 07-17-intro_to_drupal_jeff_schuler
Apcug 2011 07-17-intro_to_drupal_jeff_schulerApcug 2011 07-17-intro_to_drupal_jeff_schuler
Apcug 2011 07-17-intro_to_drupal_jeff_schulerhewie
 
jQuery: The World's Most Popular JavaScript Library Comes to XPages
jQuery: The World's Most Popular JavaScript Library Comes to XPagesjQuery: The World's Most Popular JavaScript Library Comes to XPages
jQuery: The World's Most Popular JavaScript Library Comes to XPagesTeamstudio
 
Building intranet applications with ASP.NET AJAX and jQuery
Building intranet applications with ASP.NET AJAX and jQueryBuilding intranet applications with ASP.NET AJAX and jQuery
Building intranet applications with ASP.NET AJAX and jQueryAlek Davis
 
Introduction to Drupal
Introduction to DrupalIntroduction to Drupal
Introduction to Drupalsdmaxey
 
jQuery - the world's most popular java script library comes to XPages
jQuery - the world's most popular java script library comes to XPagesjQuery - the world's most popular java script library comes to XPages
jQuery - the world's most popular java script library comes to XPagesMark Roden
 
My site is slow
My site is slowMy site is slow
My site is slowhernanibf
 
Oxford DrupalCamp 2012 - The things we found in your website
Oxford DrupalCamp 2012 - The things we found in your websiteOxford DrupalCamp 2012 - The things we found in your website
Oxford DrupalCamp 2012 - The things we found in your websitehernanibf
 
Introducing the New DSpace User Interface
Introducing the New DSpace User InterfaceIntroducing the New DSpace User Interface
Introducing the New DSpace User InterfaceTim Donohue
 
Drupal architectures for flexible content - Drupalcon Barcelona
Drupal architectures for flexible content - Drupalcon BarcelonaDrupal architectures for flexible content - Drupalcon Barcelona
Drupal architectures for flexible content - Drupalcon Barcelonahernanibf
 

Mais procurados (20)

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

Destaque

jQuery Internals + Cool Stuff
jQuery Internals + Cool StuffjQuery Internals + Cool Stuff
jQuery Internals + Cool Stuffjeresig
 
Processing and Processing.js
Processing and Processing.jsProcessing and Processing.js
Processing and Processing.jsjeresig
 
JavaScript Libraries (Kings of Code)
JavaScript Libraries (Kings of Code)JavaScript Libraries (Kings of Code)
JavaScript Libraries (Kings of Code)jeresig
 
Testing Mobile JavaScript (Fall 2010
Testing Mobile JavaScript (Fall 2010Testing Mobile JavaScript (Fall 2010
Testing Mobile JavaScript (Fall 2010jeresig
 
Secrets of JavaScript Libraries
Secrets of JavaScript LibrariesSecrets of JavaScript Libraries
Secrets of JavaScript Librariesjeresig
 
Khan Academy Computer Science
Khan Academy Computer ScienceKhan Academy Computer Science
Khan Academy Computer Sciencejeresig
 
Building a JavaScript Library
Building a JavaScript LibraryBuilding a JavaScript Library
Building a JavaScript Libraryjeresig
 
Understanding JavaScript Testing
Understanding JavaScript TestingUnderstanding JavaScript Testing
Understanding JavaScript Testingjeresig
 

Destaque (8)

jQuery Internals + Cool Stuff
jQuery Internals + Cool StuffjQuery Internals + Cool Stuff
jQuery Internals + Cool Stuff
 
Processing and Processing.js
Processing and Processing.jsProcessing and Processing.js
Processing and Processing.js
 
JavaScript Libraries (Kings of Code)
JavaScript Libraries (Kings of Code)JavaScript Libraries (Kings of Code)
JavaScript Libraries (Kings of Code)
 
Testing Mobile JavaScript (Fall 2010
Testing Mobile JavaScript (Fall 2010Testing Mobile JavaScript (Fall 2010
Testing Mobile JavaScript (Fall 2010
 
Secrets of JavaScript Libraries
Secrets of JavaScript LibrariesSecrets of JavaScript Libraries
Secrets of JavaScript Libraries
 
Khan Academy Computer Science
Khan Academy Computer ScienceKhan Academy Computer Science
Khan Academy Computer Science
 
Building a JavaScript Library
Building a JavaScript LibraryBuilding a JavaScript Library
Building a JavaScript Library
 
Understanding JavaScript Testing
Understanding JavaScript TestingUnderstanding JavaScript Testing
Understanding JavaScript Testing
 

Semelhante a JavaScript Libraries (Ajax Exp 2006)

JavaScript Library Overview (Ajax Exp West 2007)
JavaScript Library Overview (Ajax Exp West 2007)JavaScript Library Overview (Ajax Exp West 2007)
JavaScript Library Overview (Ajax Exp West 2007)jeresig
 
JavaScript Libraries (@Media)
JavaScript Libraries (@Media)JavaScript Libraries (@Media)
JavaScript Libraries (@Media)jeresig
 
JavaScript Library Overview
JavaScript Library OverviewJavaScript Library Overview
JavaScript Library Overviewjeresig
 
JavaScript Library Overview
JavaScript Library OverviewJavaScript Library Overview
JavaScript Library Overviewjeresig
 
Building Real-World Dojo Web Applications
Building Real-World Dojo Web ApplicationsBuilding Real-World Dojo Web Applications
Building Real-World Dojo Web ApplicationsAndrew Ferrier
 
Vlad Zelinschi - Embrace Native JavaScript (the anti-plugins talk) - Codecamp...
Vlad Zelinschi - Embrace Native JavaScript (the anti-plugins talk) - Codecamp...Vlad Zelinschi - Embrace Native JavaScript (the anti-plugins talk) - Codecamp...
Vlad Zelinschi - Embrace Native JavaScript (the anti-plugins talk) - Codecamp...Codecamp Romania
 
Jetpack SDK: The new possibility of the extensions on browser
Jetpack SDK: The new possibility of the extensions on browserJetpack SDK: The new possibility of the extensions on browser
Jetpack SDK: The new possibility of the extensions on browserlittlebtc
 
Starting with jQuery
Starting with jQueryStarting with jQuery
Starting with jQueryAnil Kumar
 
Introduction to the wonderful world of JavaScript
Introduction to the wonderful world of JavaScriptIntroduction to the wonderful world of JavaScript
Introduction to the wonderful world of JavaScriptJakob Torp
 
Do you need jQuery in 2019?
Do you need jQuery in 2019?Do you need jQuery in 2019?
Do you need jQuery in 2019?LindaHsu19
 
Structured web apps
Structured web appsStructured web apps
Structured web appsSheng Tian
 
jQueryTO: State of jQuery March 2013
jQueryTO: State of jQuery March 2013jQueryTO: State of jQuery March 2013
jQueryTO: State of jQuery March 2013dmethvin
 
&lt;img src="../i/r_14.png" />
&lt;img src="../i/r_14.png" />&lt;img src="../i/r_14.png" />
&lt;img src="../i/r_14.png" />tutorialsruby
 
Content Outside of CONTENTdm: Part 1: Exhibit Creation Tool using &lt;b>...&l...
Content Outside of CONTENTdm: Part 1: Exhibit Creation Tool using &lt;b>...&l...Content Outside of CONTENTdm: Part 1: Exhibit Creation Tool using &lt;b>...&l...
Content Outside of CONTENTdm: Part 1: Exhibit Creation Tool using &lt;b>...&l...tutorialsruby
 
jQuery - Chapter 1 - Introduction
 jQuery - Chapter 1 - Introduction jQuery - Chapter 1 - Introduction
jQuery - Chapter 1 - IntroductionWebStackAcademy
 
01/2009 - Portral development with liferay
01/2009 - Portral development with liferay01/2009 - Portral development with liferay
01/2009 - Portral development with liferaydaveayan
 

Semelhante a JavaScript Libraries (Ajax Exp 2006) (20)

JavaScript Library Overview (Ajax Exp West 2007)
JavaScript Library Overview (Ajax Exp West 2007)JavaScript Library Overview (Ajax Exp West 2007)
JavaScript Library Overview (Ajax Exp West 2007)
 
JavaScript Libraries (@Media)
JavaScript Libraries (@Media)JavaScript Libraries (@Media)
JavaScript Libraries (@Media)
 
JavaScript Library Overview
JavaScript Library OverviewJavaScript Library Overview
JavaScript Library Overview
 
JavaScript Library Overview
JavaScript Library OverviewJavaScript Library Overview
JavaScript Library Overview
 
Building Real-World Dojo Web Applications
Building Real-World Dojo Web ApplicationsBuilding Real-World Dojo Web Applications
Building Real-World Dojo Web Applications
 
Vlad Zelinschi - Embrace Native JavaScript (the anti-plugins talk) - Codecamp...
Vlad Zelinschi - Embrace Native JavaScript (the anti-plugins talk) - Codecamp...Vlad Zelinschi - Embrace Native JavaScript (the anti-plugins talk) - Codecamp...
Vlad Zelinschi - Embrace Native JavaScript (the anti-plugins talk) - Codecamp...
 
Jetpack SDK: The new possibility of the extensions on browser
Jetpack SDK: The new possibility of the extensions on browserJetpack SDK: The new possibility of the extensions on browser
Jetpack SDK: The new possibility of the extensions on browser
 
Starting with jQuery
Starting with jQueryStarting with jQuery
Starting with jQuery
 
Introduction to the wonderful world of JavaScript
Introduction to the wonderful world of JavaScriptIntroduction to the wonderful world of JavaScript
Introduction to the wonderful world of JavaScript
 
Jquery
JqueryJquery
Jquery
 
Do you need jQuery in 2019?
Do you need jQuery in 2019?Do you need jQuery in 2019?
Do you need jQuery in 2019?
 
Structured web apps
Structured web appsStructured web apps
Structured web apps
 
jQueryTO: State of jQuery March 2013
jQueryTO: State of jQuery March 2013jQueryTO: State of jQuery March 2013
jQueryTO: State of jQuery March 2013
 
&lt;img src="../i/r_14.png" />
&lt;img src="../i/r_14.png" />&lt;img src="../i/r_14.png" />
&lt;img src="../i/r_14.png" />
 
psager
psagerpsager
psager
 
psager
psagerpsager
psager
 
Content Outside of CONTENTdm: Part 1: Exhibit Creation Tool using &lt;b>...&l...
Content Outside of CONTENTdm: Part 1: Exhibit Creation Tool using &lt;b>...&l...Content Outside of CONTENTdm: Part 1: Exhibit Creation Tool using &lt;b>...&l...
Content Outside of CONTENTdm: Part 1: Exhibit Creation Tool using &lt;b>...&l...
 
jQuery - Chapter 1 - Introduction
 jQuery - Chapter 1 - Introduction jQuery - Chapter 1 - Introduction
jQuery - Chapter 1 - Introduction
 
DOJO
DOJO DOJO
DOJO
 
01/2009 - Portral development with liferay
01/2009 - Portral development with liferay01/2009 - Portral development with liferay
01/2009 - Portral development with liferay
 

Mais de jeresig

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

Mais de jeresig (20)

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

Último

Testing tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesTesting tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesKari Kakkonen
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfMounikaPolabathina
 
Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Hiroshi SHIBATA
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersNicole Novielli
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxLoriGlavin3
 
Manual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance AuditManual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance AuditSkynet Technologies
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxLoriGlavin3
 
UiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPathCommunity
 
Generative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfGenerative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfIngrid Airi González
 
Decarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityDecarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityIES VE
 
Connecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfConnecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfNeo4j
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality AssuranceInflectra
 
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Alkin Tezuysal
 
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...AliaaTarek5
 
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...panagenda
 
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better StrongerModern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Strongerpanagenda
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
Assure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyesAssure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyesThousandEyes
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxLoriGlavin3
 

Último (20)

Testing tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesTesting tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examples
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdf
 
Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software Developers
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
 
Manual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance AuditManual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance Audit
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
 
UiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to Hero
 
Generative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfGenerative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdf
 
Decarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityDecarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a reality
 
Connecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfConnecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdf
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
 
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
 
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
 
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
 
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better StrongerModern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
Assure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyesAssure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyes
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptx
 

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!