javascript libraries -...

90
JavaScript Libraries Ajax Experience - October 2007 John Resig (ejohn.org)

Upload: phamdung

Post on 21-Mar-2018

224 views

Category:

Documents


4 download

TRANSCRIPT

Page 1: JavaScript Libraries - TechTargetajaxexperience.techtarget.com/...John_JavaScriptLibrariesTutorial.pdf · What kind of libraries exist? Open Source Commercial Client/ Server AjaxCFC

JavaScript LibrariesAjax Experience - October 2007

John Resig (ejohn.org)

Page 2: JavaScript Libraries - TechTargetajaxexperience.techtarget.com/...John_JavaScriptLibrariesTutorial.pdf · What kind of libraries exist? Open Source Commercial Client/ Server AjaxCFC

Question: How do you want to write JavaScript?

Page 3: JavaScript Libraries - TechTargetajaxexperience.techtarget.com/...John_JavaScriptLibrariesTutorial.pdf · What kind of libraries exist? Open Source Commercial Client/ Server AjaxCFC

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.

Page 4: JavaScript Libraries - TechTargetajaxexperience.techtarget.com/...John_JavaScriptLibrariesTutorial.pdf · What kind of libraries exist? Open Source Commercial Client/ Server AjaxCFC

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.

Page 5: JavaScript Libraries - TechTargetajaxexperience.techtarget.com/...John_JavaScriptLibrariesTutorial.pdf · What kind of libraries exist? Open Source Commercial Client/ Server AjaxCFC

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.

Page 6: JavaScript Libraries - TechTargetajaxexperience.techtarget.com/...John_JavaScriptLibrariesTutorial.pdf · What kind of libraries exist? Open Source Commercial Client/ Server AjaxCFC

What we’ve just seen...

• Widgets

• Libraries

• Raw JavaScript

Page 7: JavaScript Libraries - TechTargetajaxexperience.techtarget.com/...John_JavaScriptLibrariesTutorial.pdf · What kind of libraries exist? Open Source Commercial Client/ Server AjaxCFC

What we’ve just seen...

• Widgets

• Libraries

• Raw JavaScript

Page 8: JavaScript Libraries - TechTargetajaxexperience.techtarget.com/...John_JavaScriptLibrariesTutorial.pdf · What kind of libraries exist? Open Source Commercial Client/ Server AjaxCFC

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

Page 9: JavaScript Libraries - TechTargetajaxexperience.techtarget.com/...John_JavaScriptLibrariesTutorial.pdf · What kind of libraries exist? Open Source Commercial Client/ Server AjaxCFC

What kind of libraries exist?Open Source Commercial

Client/ Server

AjaxCFCQcodo

AtlasBackbase for

Struts

Browser Only

PrototypeDojo

jQueryYahoo UI

BackbaseSmartClient

Page 10: JavaScript Libraries - TechTargetajaxexperience.techtarget.com/...John_JavaScriptLibrariesTutorial.pdf · What kind of libraries exist? Open Source Commercial Client/ Server AjaxCFC

What kind of libraries exist?Open Source Commercial

Client/ Server

AjaxCFCQcodo

AtlasBackbase for

Struts

Browser Only

PrototypeDojo

jQueryYahoo UI

BackbaseSmartClient

Page 11: JavaScript Libraries - TechTargetajaxexperience.techtarget.com/...John_JavaScriptLibrariesTutorial.pdf · What kind of libraries exist? Open Source Commercial Client/ Server AjaxCFC

Open Source LibrariesBrowser Only Client/Server

Task Specific

Scriptaculousmoo.fx

Open Rico

AjaxCFCQcodo

General Purpose

PrototypeDojo

jQueryYahoo UI

Ruby on RailsCakePHP

Page 12: JavaScript Libraries - TechTargetajaxexperience.techtarget.com/...John_JavaScriptLibrariesTutorial.pdf · What kind of libraries exist? Open Source Commercial Client/ Server AjaxCFC

Open Source LibrariesBrowser Only Client/Server

Task Specific

Scriptaculousmoo.fx

Open Rico

AjaxCFCQcodo

General Purpose

PrototypeDojo

jQueryYahoo UI

Ruby on RailsCakePHP

Page 13: JavaScript Libraries - TechTargetajaxexperience.techtarget.com/...John_JavaScriptLibrariesTutorial.pdf · What kind of libraries exist? Open Source Commercial Client/ Server AjaxCFC

Why these libraries?

Page 14: JavaScript Libraries - TechTargetajaxexperience.techtarget.com/...John_JavaScriptLibrariesTutorial.pdf · What kind of libraries exist? Open Source Commercial Client/ Server AjaxCFC

Ajaxian Survey

35%

25%

21%

20%

Prototype jQuery Yahoo UI Dojo

http://ajaxian.com/archives/ajaxian-2007-survey-results

Page 15: JavaScript Libraries - TechTargetajaxexperience.techtarget.com/...John_JavaScriptLibrariesTutorial.pdf · What kind of libraries exist? Open Source Commercial Client/ Server AjaxCFC

Google Trends

jQuery

Prototype

DojoYahoo UI

http://google.com/trends?q=prototype+javascript%2C+jquery+javascript%2C+yui+javascript%2C+dojo+javascript&ctab=0&geo=all&date=all&sort=0

Page 16: JavaScript Libraries - TechTargetajaxexperience.techtarget.com/...John_JavaScriptLibrariesTutorial.pdf · What kind of libraries exist? Open Source Commercial Client/ Server AjaxCFC

The Libraries

Page 17: JavaScript Libraries - TechTargetajaxexperience.techtarget.com/...John_JavaScriptLibrariesTutorial.pdf · What kind of libraries exist? Open Source Commercial Client/ Server AjaxCFC

Prototype

Page 18: JavaScript Libraries - TechTargetajaxexperience.techtarget.com/...John_JavaScriptLibrariesTutorial.pdf · What kind of libraries exist? Open Source Commercial Client/ Server AjaxCFC

Prototype: Overview

• Started early 2005 by Sam Stephenson

• Incredibly popular, tied with Ruby on Rails’ popularity

• Development backed by 37 Signals

Page 19: JavaScript Libraries - TechTargetajaxexperience.techtarget.com/...John_JavaScriptLibrariesTutorial.pdf · What kind of libraries exist? Open Source Commercial Client/ Server AjaxCFC

Prototype: Focus

• Improving the usability of the JavaScript language

• Big emphasis on adding in ‘missing’ JavaScript features

• Clean structure, clean objects and ‘classes’

Page 20: JavaScript Libraries - TechTargetajaxexperience.techtarget.com/...John_JavaScriptLibrariesTutorial.pdf · What kind of libraries exist? Open Source Commercial Client/ Server AjaxCFC

Prototype: Details

• Code quality is fantastic, great features

• All animations (and interactions) are in Scriptaculous

• Updated frequently

Page 21: JavaScript Libraries - TechTargetajaxexperience.techtarget.com/...John_JavaScriptLibrariesTutorial.pdf · What kind of libraries exist? Open Source Commercial Client/ Server AjaxCFC

Prototype: Docs & Community

• Documentation: GoodOfficial API documentation, some tutorials

• Community: DistributedMany bloggers love Prototype, little centralized discussion (23 posts/day).

Page 22: JavaScript Libraries - TechTargetajaxexperience.techtarget.com/...John_JavaScriptLibrariesTutorial.pdf · What kind of libraries exist? Open Source Commercial Client/ Server AjaxCFC

Prototype: File Size & Popularity

• File Size: Moderate (99KB)Unfortunately, not easily compressible with Packer - they recommend GZIP.

• Popularity: StrongApple, ESPN, CNN, Fox News

Page 23: JavaScript Libraries - TechTargetajaxexperience.techtarget.com/...John_JavaScriptLibrariesTutorial.pdf · What kind of libraries exist? Open Source Commercial Client/ Server AjaxCFC

jQuery

Page 24: JavaScript Libraries - TechTargetajaxexperience.techtarget.com/...John_JavaScriptLibrariesTutorial.pdf · What kind of libraries exist? Open Source Commercial Client/ Server AjaxCFC

jQuery: Overview

• Released January 2006 by John Resig

• Rapid rise in popularity

• Many developers across the globe

Page 25: JavaScript Libraries - TechTargetajaxexperience.techtarget.com/...John_JavaScriptLibrariesTutorial.pdf · What kind of libraries exist? Open Source Commercial Client/ Server AjaxCFC

jQuery: Focus

• Improving the interaction between JavaScript and HTML

• Finding elements then performing actions

• Highly-effective, short, code

Page 26: JavaScript Libraries - TechTargetajaxexperience.techtarget.com/...John_JavaScriptLibrariesTutorial.pdf · What kind of libraries exist? Open Source Commercial Client/ Server AjaxCFC

jQuery: Details

• Core features are limited to DOM, Events, Effects, Ajax

• Other features can be added in via plugins

Page 27: JavaScript Libraries - TechTargetajaxexperience.techtarget.com/...John_JavaScriptLibrariesTutorial.pdf · What kind of libraries exist? Open Source Commercial Client/ Server AjaxCFC

jQuery: Docs & Community

• Documentation: CompleteFully documented, complete API.

• Community: Vibrant108+ Mailing List Posts/Day

Page 28: JavaScript Libraries - TechTargetajaxexperience.techtarget.com/...John_JavaScriptLibrariesTutorial.pdf · What kind of libraries exist? Open Source Commercial Client/ Server AjaxCFC

jQuery: File Size & Popularity

• File Size: SmallAbout 20KB with everything.

• Popularity: StrongUsers: IBM, Technorati, MSNBC, DiggProjects: Drupal, Wordpress

Page 29: JavaScript Libraries - TechTargetajaxexperience.techtarget.com/...John_JavaScriptLibrariesTutorial.pdf · What kind of libraries exist? Open Source Commercial Client/ Server AjaxCFC

Yahoo! UI

Page 30: JavaScript Libraries - TechTargetajaxexperience.techtarget.com/...John_JavaScriptLibrariesTutorial.pdf · What kind of libraries exist? Open Source Commercial Client/ Server AjaxCFC

YUI: Overview

• Released Feb 2006 by Yahoo!

• Maintained and financed internally

• Attempt to standardize internal JavaScript

Page 31: JavaScript Libraries - TechTargetajaxexperience.techtarget.com/...John_JavaScriptLibrariesTutorial.pdf · What kind of libraries exist? Open Source Commercial Client/ Server AjaxCFC

YUI: Focus

• Exposing, and solving, common methodologies

• Looking for common idioms (Drag-and-Drop, Calendar, Auto-Complete)

Page 32: JavaScript Libraries - TechTargetajaxexperience.techtarget.com/...John_JavaScriptLibrariesTutorial.pdf · What kind of libraries exist? Open Source Commercial Client/ Server AjaxCFC

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)

Page 33: JavaScript Libraries - TechTargetajaxexperience.techtarget.com/...John_JavaScriptLibrariesTutorial.pdf · What kind of libraries exist? Open Source Commercial Client/ Server AjaxCFC

YUI: Docs & Community

• Documentation: ExcellentEverything is thoroughly documented. Lots of explanations, plenty of demos.

• Community: ModerateMailing List hovering around 36 posts/day.

Page 34: JavaScript Libraries - TechTargetajaxexperience.techtarget.com/...John_JavaScriptLibrariesTutorial.pdf · What kind of libraries exist? Open Source Commercial Client/ Server AjaxCFC

YUI: File Size & Popularity

• File Size: 40KB (Compressed)Code is quite modular, you can remove un-used code easily.

• Popularity: Possibly WaningMany good bloggers use to talk about it - have moved on.

Page 35: JavaScript Libraries - TechTargetajaxexperience.techtarget.com/...John_JavaScriptLibrariesTutorial.pdf · What kind of libraries exist? Open Source Commercial Client/ Server AjaxCFC

Dojo

Page 36: JavaScript Libraries - TechTargetajaxexperience.techtarget.com/...John_JavaScriptLibrariesTutorial.pdf · What kind of libraries exist? Open Source Commercial Client/ Server AjaxCFC

Dojo: Overview

• Started early 2005 by Alex Russell

• Large development community

• Lots of corporate backing (IBM, AOL)

• Big code base, tons of features

Page 37: JavaScript Libraries - TechTargetajaxexperience.techtarget.com/...John_JavaScriptLibrariesTutorial.pdf · What kind of libraries exist? Open Source Commercial Client/ Server AjaxCFC

Dojo: Focus

• Building complete web applications

• A package heirarchy, e.g.:dojo.addClass( ... )

• Focus has transcended into widgets (Dijit)

• Huge number of features

• Today we’re looking at Dojo 0.9

Page 38: JavaScript Libraries - TechTargetajaxexperience.techtarget.com/...John_JavaScriptLibrariesTutorial.pdf · What kind of libraries exist? Open Source Commercial Client/ Server AjaxCFC

Dojo: Docs & Community

• Documentation: Rough.In the middle of a major documentation overhaul for 0.9.

• Community: LivelyActive forum with frequent discussions.

Page 39: JavaScript Libraries - TechTargetajaxexperience.techtarget.com/...John_JavaScriptLibrariesTutorial.pdf · What kind of libraries exist? Open Source Commercial Client/ Server AjaxCFC

Dojo: File Size & Popularity

• File Size: Large (100Kb compressed)It’s highly recommended that you remove unused modules.

• Popularity: SubstantialBacking from many corporate sponsors (IBM).

Page 40: JavaScript Libraries - TechTargetajaxexperience.techtarget.com/...John_JavaScriptLibrariesTutorial.pdf · What kind of libraries exist? Open Source Commercial Client/ Server AjaxCFC

What should a library have?

Page 41: JavaScript Libraries - TechTargetajaxexperience.techtarget.com/...John_JavaScriptLibrariesTutorial.pdf · What kind of libraries exist? Open Source Commercial Client/ Server AjaxCFC

Code Base

• Core Functionality

• DOM

• Events

• Ajax

• Animations

• User Interface Widgets

Page 42: JavaScript Libraries - TechTargetajaxexperience.techtarget.com/...John_JavaScriptLibrariesTutorial.pdf · What kind of libraries exist? Open Source Commercial Client/ Server AjaxCFC

Development

• Good Architecture

• Open Licensing

• Wide Browser Support

• Small File Size

Page 43: JavaScript Libraries - TechTargetajaxexperience.techtarget.com/...John_JavaScriptLibrariesTutorial.pdf · What kind of libraries exist? Open Source Commercial Client/ Server AjaxCFC

Project

• Development Team (Open, Funded)

• Code in SVN / Bug Tracker

• Good Unit Test Coverage

Page 44: JavaScript Libraries - TechTargetajaxexperience.techtarget.com/...John_JavaScriptLibrariesTutorial.pdf · What kind of libraries exist? Open Source Commercial Client/ Server AjaxCFC

Documentation

• Full API Coverage

• Plenty of Tutorials

• Some Books

• Wide variety of Demos

Page 45: JavaScript Libraries - TechTargetajaxexperience.techtarget.com/...John_JavaScriptLibrariesTutorial.pdf · What kind of libraries exist? Open Source Commercial Client/ Server AjaxCFC

Community

• Active Mailing List / Forum

• Support and Training

• Popularity

Page 46: JavaScript Libraries - TechTargetajaxexperience.techtarget.com/...John_JavaScriptLibrariesTutorial.pdf · What kind of libraries exist? Open Source Commercial Client/ Server AjaxCFC

Code Base

• Core Functionality

• DOM

• Events

• Ajax

• Animations

• User Interface Widgets

Page 47: JavaScript Libraries - TechTargetajaxexperience.techtarget.com/...John_JavaScriptLibrariesTutorial.pdf · What kind of libraries exist? Open Source Commercial Client/ Server AjaxCFC

Core Functionality

• Bare minimum needed to make a dynamic “Ajax” web site:

• DOM (Traversal and Manipulation)

• Events

• Ajax

• Animations

Page 48: JavaScript Libraries - TechTargetajaxexperience.techtarget.com/...John_JavaScriptLibrariesTutorial.pdf · What kind of libraries exist? Open Source Commercial Client/ Server AjaxCFC

DOM

• Traversal

• Using CSS selectors to locate elements

• Modification

• Create/remove/modify elements

• Having a DOM builder is important

Page 49: JavaScript Libraries - TechTargetajaxexperience.techtarget.com/...John_JavaScriptLibrariesTutorial.pdf · What kind of libraries exist? Open Source Commercial Client/ Server AjaxCFC

DOM Traversal

• Prototype:$$(“table > tr”)

• jQuery:$(“div > p:nth-child(odd)”)

• Dojo:dojo.query(“table tr:nth-child(even)”)

• Yahoo UI:No querying support

Page 50: JavaScript Libraries - TechTargetajaxexperience.techtarget.com/...John_JavaScriptLibrariesTutorial.pdf · What kind of libraries exist? Open Source Commercial Client/ Server AjaxCFC

DOM Modification

• Prototype:Insertion.Bottom(“list”,”<li>Another item</li>”);

• jQuery:$(“#li”).append(“<li>An item</li>”);

• Dojo and Yahoo UI have weak support - no DOM building capabilities, basic property modification

Page 51: JavaScript Libraries - TechTargetajaxexperience.techtarget.com/...John_JavaScriptLibrariesTutorial.pdf · What kind of libraries exist? Open Source Commercial Client/ Server AjaxCFC

Events• Support for simple event binding/removal

• Support for custom events is essential

• Prototype:Event.observe(“button”,”click”, function(){ alert(“Thanks for the click!”);});

• jQuery:$(“div”).click(function(){ alert(“div clicked”);});

Page 52: JavaScript Libraries - TechTargetajaxexperience.techtarget.com/...John_JavaScriptLibrariesTutorial.pdf · What kind of libraries exist? Open Source Commercial Client/ Server AjaxCFC

Events (cont.)

• Yahoo UI:YAHOO.util.Event.addEventListener(“list”, “click”, function(){ alert(“List Clicked”);});

• Dojo:dojo.connect(dojo.byId("mylink"), "click", function(){ alert(“Link clicked”);});

Page 53: JavaScript Libraries - TechTargetajaxexperience.techtarget.com/...John_JavaScriptLibrariesTutorial.pdf · What kind of libraries exist? Open Source Commercial Client/ Server AjaxCFC

Ajax• Request and load remote documents

• Prototype:new Ajax.Request(“test.html”, { method: “GET”, onComplete: function(res){ $(‘results’).innerHTML = res.responseText; }});

• jQuery:$(“#results”).load(“test.html”);

Page 54: JavaScript Libraries - TechTargetajaxexperience.techtarget.com/...John_JavaScriptLibrariesTutorial.pdf · What kind of libraries exist? Open Source Commercial Client/ Server AjaxCFC

Ajax (cont.)• Yahoo UI

YAHOO.util.Connect.asyncRequest( 'GET', “test.html”, function(data){ YAHOO.util.Dom.id(“results”).innerHTML = data; });

• Dojodojo.io.bind({ url: "test.html", method: "get", mimetype: "text/html", load: function(type, data) { dojo.byId(“results”).innerHTML = data; }});

Page 55: JavaScript Libraries - TechTargetajaxexperience.techtarget.com/...John_JavaScriptLibrariesTutorial.pdf · What kind of libraries exist? Open Source Commercial Client/ Server AjaxCFC

Animations

• Simple animations (hide/show/toggle)

• Provide elegant transitions

• No animations in Prototype Core (see Scriptaculous, instead)

• jQuery:$(“#menu”).slideDown(“slow”);

Page 56: JavaScript Libraries - TechTargetajaxexperience.techtarget.com/...John_JavaScriptLibrariesTutorial.pdf · What kind of libraries exist? Open Source Commercial Client/ Server AjaxCFC

Animations (cont.)

• Yahoo UI:new YAHOO.util.Anim(“list”, { width: { from: 10, to: 100 } }, 1, YAHOO.util.Easing.easeOut);

• Dojo:dojo.fadeOut({ node: dojo.byId(“list”), duration: 500 });

Page 57: JavaScript Libraries - TechTargetajaxexperience.techtarget.com/...John_JavaScriptLibrariesTutorial.pdf · What kind of libraries exist? Open Source Commercial Client/ Server AjaxCFC

Core Feature Summary

DOM Events Anim. Ajax

Prototype X X - X

jQuery X X X X

Yahoo UI / X X X

Dojo / X X X

Page 58: JavaScript Libraries - TechTargetajaxexperience.techtarget.com/...John_JavaScriptLibrariesTutorial.pdf · What kind of libraries exist? Open Source Commercial Client/ Server AjaxCFC

User Interface Widgets

• Difficult to implement components, made easy

• Commonly used, save duplication

• Some common components:Drag & Drop, Tree, Grid, Modal Dialog,Tabbed Pane, Menu / Toolbar, Datepicker, Slider

Page 59: JavaScript Libraries - TechTargetajaxexperience.techtarget.com/...John_JavaScriptLibrariesTutorial.pdf · What kind of libraries exist? Open Source Commercial Client/ Server AjaxCFC

User Interface Packages

• Only looking at officially-supported code:

• Prototype has Scriptaculous

• jQuery has jQuery UI

• Dojo has Dijit

• Included in Yahoo UI

Page 60: JavaScript Libraries - TechTargetajaxexperience.techtarget.com/...John_JavaScriptLibrariesTutorial.pdf · What kind of libraries exist? Open Source Commercial Client/ Server AjaxCFC

Drag & Drop

• Drag an item from one location and drop in an other

• Supported by all libraries

Page 61: JavaScript Libraries - TechTargetajaxexperience.techtarget.com/...John_JavaScriptLibrariesTutorial.pdf · What kind of libraries exist? Open Source Commercial Client/ Server AjaxCFC

Tree

• A navigable hierarchy (like a folder/file explorer)

• In Dojo and Yahoo UI

Page 62: JavaScript Libraries - TechTargetajaxexperience.techtarget.com/...John_JavaScriptLibrariesTutorial.pdf · What kind of libraries exist? Open Source Commercial Client/ Server AjaxCFC

Grid

• An advanced table (resizable, editable, easily navigable)

• In Dojo and Yahoo UI

Page 63: JavaScript Libraries - TechTargetajaxexperience.techtarget.com/...John_JavaScriptLibrariesTutorial.pdf · What kind of libraries exist? Open Source Commercial Client/ Server AjaxCFC

Modal Dialog

• Display confined content (usually drag & droppable) and confirmation dialogs

• In Dojo, Yahoo UI, and jQuery

Page 64: JavaScript Libraries - TechTargetajaxexperience.techtarget.com/...John_JavaScriptLibrariesTutorial.pdf · What kind of libraries exist? Open Source Commercial Client/ Server AjaxCFC

Tabbed Pane

• Multiple panes of content navigable by a series of tabs

• In Dojo, Yahoo UI, and jQuery

Page 65: JavaScript Libraries - TechTargetajaxexperience.techtarget.com/...John_JavaScriptLibrariesTutorial.pdf · What kind of libraries exist? Open Source Commercial Client/ Server AjaxCFC

Menu / Toolbar

• A list of navigable items (with sub-menus)

• In Dojo and Yahoo UI

Page 66: JavaScript Libraries - TechTargetajaxexperience.techtarget.com/...John_JavaScriptLibrariesTutorial.pdf · What kind of libraries exist? Open Source Commercial Client/ Server AjaxCFC

Datepicker

• An input for selecting a date (or a range of dates)

• In Dojo, Yahoo UI, and jQuery

Page 67: JavaScript Libraries - TechTargetajaxexperience.techtarget.com/...John_JavaScriptLibrariesTutorial.pdf · What kind of libraries exist? Open Source Commercial Client/ Server AjaxCFC

Slider

• A draggable input for entering a general, numerical, value

• In all libraries

Page 68: JavaScript Libraries - TechTargetajaxexperience.techtarget.com/...John_JavaScriptLibrariesTutorial.pdf · What kind of libraries exist? Open Source Commercial Client/ Server AjaxCFC

Tons More!

• Color Picker (Dojo, YUI)

• Layout (Dojo, YUI)

• Auto Complete (Dojo, Proto, YUI)

• Selectables (Proto, jQuery)

• Accordion (Dojo, jQuery)

• WYSIWYG (Dojo, YUI)

Page 69: JavaScript Libraries - TechTargetajaxexperience.techtarget.com/...John_JavaScriptLibrariesTutorial.pdf · What kind of libraries exist? Open Source Commercial Client/ Server AjaxCFC

Themeing

• A consistent look-and-feel for widgets

• jQuery, Yahoo UI, and Dojo provide themeing capabilities

• jQuery’s and Yahoo UI’s are documented

Page 70: JavaScript Libraries - TechTargetajaxexperience.techtarget.com/...John_JavaScriptLibrariesTutorial.pdf · What kind of libraries exist? Open Source Commercial Client/ Server AjaxCFC

Accessibility

• Taking in to consideration points from ARIA (Accessible Rich Internet Applications)

• Dojo is taking a solid lead, here

Page 71: JavaScript Libraries - TechTargetajaxexperience.techtarget.com/...John_JavaScriptLibrariesTutorial.pdf · What kind of libraries exist? Open Source Commercial Client/ Server AjaxCFC

Development

• Good Architecture

• Open Licensing

• Wide Browser Support

• Small File Size

Page 72: JavaScript Libraries - TechTargetajaxexperience.techtarget.com/...John_JavaScriptLibrariesTutorial.pdf · What kind of libraries exist? Open Source Commercial Client/ Server AjaxCFC

Architecture

• Bottom Up (Prototype, jQuery) vs. Top Down (Dojo, Yahoo UI)

• jQuery, Dojo, and Yahoo UI all use a single namespace

• jQuery is extensible with plugins

Page 73: JavaScript Libraries - TechTargetajaxexperience.techtarget.com/...John_JavaScriptLibrariesTutorial.pdf · What kind of libraries exist? Open Source Commercial Client/ Server AjaxCFC

Licensing

• All use liberal licenses (“Keep my name on the file, don’t sue me.”)

• MIT:Prototype, jQuery

• BSD:Yahoo UI, Dojo

Page 74: JavaScript Libraries - TechTargetajaxexperience.techtarget.com/...John_JavaScriptLibrariesTutorial.pdf · What kind of libraries exist? Open Source Commercial Client/ Server AjaxCFC

Browser Support

• Everyone supports:IE 6+, Firefox 2+, Safari 2+, Opera 9+

• Except:

• Prototype doesn’t support Opera

• Dojo is dropping support for Safari 2

Page 75: JavaScript Libraries - TechTargetajaxexperience.techtarget.com/...John_JavaScriptLibrariesTutorial.pdf · What kind of libraries exist? Open Source Commercial Client/ Server AjaxCFC

File Size

• Serving your JavaScript minified + Gzipped

• Optimal level of compression and speed

• Core file size:

0

8.75

17.50

26.25

35.00

Prototype jQuery Yahoo UI Dojo

Page 76: JavaScript Libraries - TechTargetajaxexperience.techtarget.com/...John_JavaScriptLibrariesTutorial.pdf · What kind of libraries exist? Open Source Commercial Client/ Server AjaxCFC

Project

• Development Team (Open, Funded)

• Code in SVN / Bug Tracker

• Good Unit Test Coverage

Page 77: JavaScript Libraries - TechTargetajaxexperience.techtarget.com/...John_JavaScriptLibrariesTutorial.pdf · What kind of libraries exist? Open Source Commercial Client/ Server AjaxCFC

Development Team

• Prototype, jQuery, and Dojo all have open development (anyone can contribute)

• jQuery, Yahoo UI, and Dojo all have paid, full-time, developers working on the code

• All have paid, part-time, developers

Page 78: JavaScript Libraries - TechTargetajaxexperience.techtarget.com/...John_JavaScriptLibrariesTutorial.pdf · What kind of libraries exist? Open Source Commercial Client/ Server AjaxCFC

SVN / Bug Tracker

• Prototype, jQuery, and Dojo all have code in a public SVN repositor

• Yahoo UI’s development is private and is limited to Yahoo employees

• All libraries have a public bug tracker

Page 79: JavaScript Libraries - TechTargetajaxexperience.techtarget.com/...John_JavaScriptLibrariesTutorial.pdf · What kind of libraries exist? Open Source Commercial Client/ Server AjaxCFC

Unit Tests

• All libraries have some automated unit tests

• jQuery, Yahoo UI, and Dojo all have public unit tests

• jQuery and Dojo have tests that can run in Rhino

Page 80: JavaScript Libraries - TechTargetajaxexperience.techtarget.com/...John_JavaScriptLibrariesTutorial.pdf · What kind of libraries exist? Open Source Commercial Client/ Server AjaxCFC

Documentation

• Full API Coverage

• Plenty of Tutorials

• Some Books

• Wide variety of Demos

Page 81: JavaScript Libraries - TechTargetajaxexperience.techtarget.com/...John_JavaScriptLibrariesTutorial.pdf · What kind of libraries exist? Open Source Commercial Client/ Server AjaxCFC

API Documentation

• Prototype, jQuery, and Yahoo UI all have full coverage

• jQuery provides runnable examples with each API item

• Dojo’s coverage is spotty - work in progress

Page 82: JavaScript Libraries - TechTargetajaxexperience.techtarget.com/...John_JavaScriptLibrariesTutorial.pdf · What kind of libraries exist? Open Source Commercial Client/ Server AjaxCFC

Tutorials

• All libraries provide some tutorials

• jQuery and Yahoo UI have screencasts

• Prototype: 6

• jQuery: 68

• Yahoo UI: X

• Dojo: X

Page 83: JavaScript Libraries - TechTargetajaxexperience.techtarget.com/...John_JavaScriptLibrariesTutorial.pdf · What kind of libraries exist? Open Source Commercial Client/ Server AjaxCFC

Books• Prototype:

• Prototype and Scriptaculous in Action

• Prototype and Scriptaculous (Pragmatic)

• jQuery:

• Learning jQuery (Packt)

• jQuery Reference Guide (Packt)

• Yahoo UI: None

• Dojo: A short online book

Page 84: JavaScript Libraries - TechTargetajaxexperience.techtarget.com/...John_JavaScriptLibrariesTutorial.pdf · What kind of libraries exist? Open Source Commercial Client/ Server AjaxCFC

Demos

• Yahoo UI provides a considerable number of live demos and examples for all features

• jQuery provides live examples and a few demo applications

• Dojo provides demo applications for their widgets

Page 85: JavaScript Libraries - TechTargetajaxexperience.techtarget.com/...John_JavaScriptLibrariesTutorial.pdf · What kind of libraries exist? Open Source Commercial Client/ Server AjaxCFC

Community

• Active Mailing List / Forum

• Support and Training

• Popularity

Page 86: JavaScript Libraries - TechTargetajaxexperience.techtarget.com/...John_JavaScriptLibrariesTutorial.pdf · What kind of libraries exist? Open Source Commercial Client/ Server AjaxCFC

Mailing List / Forum

• Prototype, jQuery, and Yahoo UI have mailing lists

• Prototype: 23 posts/day

• jQuery: 108 posts/day

• Yahoo UI: 36 posts/day

• Dojo has an active forum

Page 87: JavaScript Libraries - TechTargetajaxexperience.techtarget.com/...John_JavaScriptLibrariesTutorial.pdf · What kind of libraries exist? Open Source Commercial Client/ Server AjaxCFC

Support and Training

• Dojo provides paid support and training (via Sitepen)

Page 88: JavaScript Libraries - TechTargetajaxexperience.techtarget.com/...John_JavaScriptLibrariesTutorial.pdf · What kind of libraries exist? Open Source Commercial Client/ Server AjaxCFC

Popularity

• Who uses what:

• Prototype: Apple, ESPN, CNN, Fox News

• jQuery: Google, Amazon, Digg, NBC, Intel

• Yahoo: Yahoo, LinkedIn, Target, Slashdot

• Dojo: IBM, AOL

Page 89: JavaScript Libraries - TechTargetajaxexperience.techtarget.com/...John_JavaScriptLibrariesTutorial.pdf · What kind of libraries exist? Open Source Commercial Client/ Server AjaxCFC

More Information

• Prototype:http://prototypejs.org/

• jQuery:http://jquery.com/

• Yahoo UI:http://developer.yahoo.com/yui/

• Dojo:http://dojotoolkit.org/

Page 90: JavaScript Libraries - TechTargetajaxexperience.techtarget.com/...John_JavaScriptLibrariesTutorial.pdf · What kind of libraries exist? Open Source Commercial Client/ Server AjaxCFC

Ajax Experience Presentations

• Presentations on:

• Dojo (2)

• Prototype (2) & Scriptaculous (1)

• jQuery (3)

• Go to one that sounds interesting and enjoy!