SlideShare a Scribd company logo
1 of 35
Download to read offline
JavaScript Libraries
Future of Web Design
NYC08
Karl Swedberg
• Email: karl@learningjquery.com
• Twitter: @kswedberg
• Slides, links, and examples:
training.learningjquery.com
Roseland Ballroom
You can …
Roseland Ballroom
You can …
Be like Glenn
Why Use JavaScript?
• Keep HTML squeaky clean
• User Interaction & immediate feedback
• Server interaction without page refresh
Why Not Use Flash?
• Flash is great!
• You should use it.
• But it’s not the answer to every question,
or the solution to every problem
Why Use a
JavaScript Library?
• Crazy fast development
• Cross-browser solutions without the mess
• Leverage what you already know about
HTML & CSS
• Better CSS support than CSS
(cf. www.quirksmode.org)
Why Use a
JavaScript Library?
• Animation, movement, effects with ease
• Painlessly Unobtrusive
• Encourages Progressive Enhancement
What’s Available?
• Prototype / Scriptaculous
• Dojo Toolkit
• Mootools
• YUI :Yahoo! User Interface
• jQuery
The Big Five:
Prototype
• www.prototypejs.org
• script.aculo.us
• Extensions: scripteka.com
Dojo
• www.dojotoolkit.org
• Dojo Core
• Dijit
• DojoX
Mootools
• mootools.net
• mootorial.com
• Extensions:
• clientcide.com
• mooforum.net
• esteak.net
Yahoo! User Interface
YUI
• developer.yahoo.com/yui
jQuery
• jquery.com
• Plugins: plugins.jquery.com
• jQuery UI: ui.jquery.com
What’s Available?
• Mochikit
• Adobe Spry
• SproutCore
• Cappuccino
• ExtJS
• DOMAssistant
• base2
• DED|Chain
• JavaScriptMVC
• qooxdoo
• midori
• June
• UIZE
• SimpleJS
• fleegix.js
• Foundation
• GWT
• and many more!
Others:
What Can They Do
For Me?
• Find elements on a web page.
• Do something with them.
What Can They Do
For Me?
• Insert, copy, move, remove elements.
• Change their attributes, their appearance.
• Animate them – with slides, fades, scales,
and all manner of movement.
What Can They Do
For Me?
• Incorporate “widgets” (date pickers,
dialogs, data grids, sliders, etc.)
• Send information to the server.
• And receive information from the server.
• And do stuff with that information.
• Help with more “programmery” things.
What Do they look like?
• A lot more familiar than you might expect.
A lot like CSS
• element {} 

 
 
 
 div: <div>
• #id {} 
 
 
 
 
 
 #myid: <h2 id="myid">
• .class {}
 
 
 
 
 .myclass: <p class="myclass">
• selector1, selector2 {} 

 p, a: <p></p><a></a>
• ancestor descendant {} 
 p span: <p><span><span>
• parent > child {}
 
 
 p > span: <p><span><span>
• :nth-child() {}
 
 
 
 li:nth-child(2): <ul><li><li>
http://www.w3.org/TR/css3-selectors/
A lot like CSS
• $('element') 
 
 
 
 
 div: <div>
• $('#id') 
 
 
 
 
 
 #myid: <h2 id="myid">
• $('.class')
 
 
 
 
 
 .myclass: <p class="myclass">
• $('selector1, selector2') 
 
 p, a: <p></p><a></a>
• $('ancestor descendant') 
 
 p span: <p><span><span>
• $('parent > child') 
 
 
 p > span: <p><span><span>
• $(':nth-child()')
 
 
 
 li:nth-child(2): <ul><li><li>
http://docs.jquery.com/Selectors
A lot like real words
$('#myid span')
.addClass('newclass')
.parents('div:first')
.fadeIn('slow')
.find('a')
.click(function() {
confirm('You really wanna go there?');
});
A lot like real words
$('#policy-cta a')
.media({
width: 500,
height: 300,
flashVars: {
autostart: 'true',
controlbar: 'none',
flvPath: '/assets/videos/intro.flv'
}
});
Basic Example 1
Table row striping
• jQuery
$('tr:nth-child(odd)').addClass('alt');
• Mootools
$$('tr:odd').addClass('alt');
• Dojo
dojo.query('tr:nth-child(odd)').addClass('alt');
Basic Example 2
Hover
• Dojo
dojo.query('tr')
.onmouseenter(function(e) {
e.target.className += ' highlight';
})
.onmouseleave(function(e) {
e.target.className = e.target.className
.replace(/ highlight/, '');
});
Basic Example 2
Hover
• Mootools
$$('tr').addEvents({
mouseover: function() {
this.addClass('highlight');
},
mouseout: function() {
this.removeClass('highlight');
}
});
Basic Example 2
Hover
• jQuery
$('tr')
.mouseover(function() {
$(this).addClass('highlight');
})
.mouseout( function() {
$(this).removeClass('highlight');
});
Basic Example 2
Hover
• jQuery
$('tr').hover(function() {
$(this).addClass('highlight');
}, function() {
$(this).removeClass('highlight');
});
Let’s See It
• Demo
How Do I Choose?
• Library Maturity (alpha, beta, number of releases?
Unit tests?)
• Documentation (official, unofficial, online, offline,
books?)
• Community (Forums, Google groups, blogs, IRC,
Twitter? Tone, helpfulness, responsiveness?)
• Project requirements (web site or application?
ajax, effects, events?)
• Performance (benchmarks?)
How Do I Choose?
• Server-side Framework (Does it come bundled
with a JS library?)
• Extensibility (Plugins, widgets, components available
and easy to find? Create your own easily?)
• Style (What does the code look like? Is it easy to
figure out what's going on? Does it look familiar at
all?)
• Commitment to Unobtrusive JavaScript and
Accessibility
• Cost and Licensing (fee? open source? MIT, GNU,
GPL, LGPL, BSD, etc.)
How Do I Get Them?
• Go to their websites
How Do I Get Them?
• Go to their websites
• dojotoolkit.org
• jquery.com
• mootools.net
• prototypejs.org
• developer.yahoo.com/yui
How Do I Get Them?
• Go to the Google AJAX Libraries API
code.google.com/apis/ajaxlibs/
ThankYou!

More Related Content

What's hot

How NOT to get lost in the current JavaScript landscape
How NOT to get lost in the current JavaScript landscapeHow NOT to get lost in the current JavaScript landscape
How NOT to get lost in the current JavaScript landscapeRadosław Scheibinger
 
Modern javascript
Modern javascriptModern javascript
Modern javascriptKevin Ball
 
Becoming a more productive Rails Developer
Becoming a more productive Rails DeveloperBecoming a more productive Rails Developer
Becoming a more productive Rails DeveloperJohn McCaffrey
 
Freelancing and side-projects on Rails
Freelancing and side-projects on RailsFreelancing and side-projects on Rails
Freelancing and side-projects on RailsJohn McCaffrey
 
Bringing Interactivity to Your Drupal Site with Node.js Integration
Bringing Interactivity to Your Drupal Site with Node.js IntegrationBringing Interactivity to Your Drupal Site with Node.js Integration
Bringing Interactivity to Your Drupal Site with Node.js IntegrationAcquia
 
GitBucket: The perfect Github clone by Scala
GitBucket: The perfect Github clone by ScalaGitBucket: The perfect Github clone by Scala
GitBucket: The perfect Github clone by Scalatakezoe
 
[Rakuten TechConf2014] [C-2] Big Data for eBooks and eReaders
[Rakuten TechConf2014] [C-2] Big Data for eBooks and eReaders[Rakuten TechConf2014] [C-2] Big Data for eBooks and eReaders
[Rakuten TechConf2014] [C-2] Big Data for eBooks and eReadersRakuten Group, Inc.
 
Flexible UI Components for a Multi-Framework World
Flexible UI Components for a Multi-Framework WorldFlexible UI Components for a Multi-Framework World
Flexible UI Components for a Multi-Framework WorldKevin Ball
 
In-browser storage and me
In-browser storage and meIn-browser storage and me
In-browser storage and meJason Casden
 
Eureka Moment UKLUG
Eureka Moment UKLUGEureka Moment UKLUG
Eureka Moment UKLUGPaul Withers
 
DownTheRabbitHole.js – How to Stay Sane in an Insane Ecosystem
DownTheRabbitHole.js – How to Stay Sane in an Insane EcosystemDownTheRabbitHole.js – How to Stay Sane in an Insane Ecosystem
DownTheRabbitHole.js – How to Stay Sane in an Insane EcosystemFITC
 
Masterin Large Scale Java Script Applications
Masterin Large Scale Java Script ApplicationsMasterin Large Scale Java Script Applications
Masterin Large Scale Java Script ApplicationsFabian Jakobs
 
Cloud conference - mongodb
Cloud conference - mongodbCloud conference - mongodb
Cloud conference - mongodbMitch Pirtle
 
A tale of 3 databases
A tale of 3 databasesA tale of 3 databases
A tale of 3 databasesChris Skardon
 
Introducing the Seneca MVP framework for Node.js
Introducing the Seneca MVP framework for Node.jsIntroducing the Seneca MVP framework for Node.js
Introducing the Seneca MVP framework for Node.jsRichard Rodger
 
High Availability Perl DBI + MySQL
High Availability Perl DBI + MySQLHigh Availability Perl DBI + MySQL
High Availability Perl DBI + MySQLSteve Purkis
 

What's hot (20)

How NOT to get lost in the current JavaScript landscape
How NOT to get lost in the current JavaScript landscapeHow NOT to get lost in the current JavaScript landscape
How NOT to get lost in the current JavaScript landscape
 
Modern javascript
Modern javascriptModern javascript
Modern javascript
 
Becoming a more productive Rails Developer
Becoming a more productive Rails DeveloperBecoming a more productive Rails Developer
Becoming a more productive Rails Developer
 
Freelancing and side-projects on Rails
Freelancing and side-projects on RailsFreelancing and side-projects on Rails
Freelancing and side-projects on Rails
 
Be faster then rabbits
Be faster then rabbitsBe faster then rabbits
Be faster then rabbits
 
Bringing Interactivity to Your Drupal Site with Node.js Integration
Bringing Interactivity to Your Drupal Site with Node.js IntegrationBringing Interactivity to Your Drupal Site with Node.js Integration
Bringing Interactivity to Your Drupal Site with Node.js Integration
 
Irb Tips and Tricks
Irb Tips and TricksIrb Tips and Tricks
Irb Tips and Tricks
 
CQ5 and Sling overview
CQ5 and Sling overviewCQ5 and Sling overview
CQ5 and Sling overview
 
GitBucket: The perfect Github clone by Scala
GitBucket: The perfect Github clone by ScalaGitBucket: The perfect Github clone by Scala
GitBucket: The perfect Github clone by Scala
 
[Rakuten TechConf2014] [C-2] Big Data for eBooks and eReaders
[Rakuten TechConf2014] [C-2] Big Data for eBooks and eReaders[Rakuten TechConf2014] [C-2] Big Data for eBooks and eReaders
[Rakuten TechConf2014] [C-2] Big Data for eBooks and eReaders
 
Flexible UI Components for a Multi-Framework World
Flexible UI Components for a Multi-Framework WorldFlexible UI Components for a Multi-Framework World
Flexible UI Components for a Multi-Framework World
 
In-browser storage and me
In-browser storage and meIn-browser storage and me
In-browser storage and me
 
Eureka Moment UKLUG
Eureka Moment UKLUGEureka Moment UKLUG
Eureka Moment UKLUG
 
DownTheRabbitHole.js – How to Stay Sane in an Insane Ecosystem
DownTheRabbitHole.js – How to Stay Sane in an Insane EcosystemDownTheRabbitHole.js – How to Stay Sane in an Insane Ecosystem
DownTheRabbitHole.js – How to Stay Sane in an Insane Ecosystem
 
Masterin Large Scale Java Script Applications
Masterin Large Scale Java Script ApplicationsMasterin Large Scale Java Script Applications
Masterin Large Scale Java Script Applications
 
Cloud conference - mongodb
Cloud conference - mongodbCloud conference - mongodb
Cloud conference - mongodb
 
A tale of 3 databases
A tale of 3 databasesA tale of 3 databases
A tale of 3 databases
 
Introducing the Seneca MVP framework for Node.js
Introducing the Seneca MVP framework for Node.jsIntroducing the Seneca MVP framework for Node.js
Introducing the Seneca MVP framework for Node.js
 
Web Ninja
Web NinjaWeb Ninja
Web Ninja
 
High Availability Perl DBI + MySQL
High Availability Perl DBI + MySQLHigh Availability Perl DBI + MySQL
High Availability Perl DBI + MySQL
 

Viewers also liked

Ficha javacc
Ficha javaccFicha javacc
Ficha javaccÆx Lynx
 
Como Construir um compilador-cap 2
Como Construir um compilador-cap 2Como Construir um compilador-cap 2
Como Construir um compilador-cap 2Maellson Marques
 
Compilers - Using Lex and YACC
Compilers - Using Lex and YACCCompilers - Using Lex and YACC
Compilers - Using Lex and YACCMichel Alves
 
[TUTORIAL] PetitParser
[TUTORIAL] PetitParser[TUTORIAL] PetitParser
[TUTORIAL] PetitParserESUG
 
Compilador analise lexica
Compilador analise lexicaCompilador analise lexica
Compilador analise lexicaAdilmar Dantas
 
Poscomp-Cadernodequestes ano2011
Poscomp-Cadernodequestes ano2011Poscomp-Cadernodequestes ano2011
Poscomp-Cadernodequestes ano2011Maellson Marques
 
Compilador Web: uma Experiência Interdisciplinar entre as Disciplinas de Enge...
Compilador Web: uma Experiência Interdisciplinar entre as Disciplinas de Enge...Compilador Web: uma Experiência Interdisciplinar entre as Disciplinas de Enge...
Compilador Web: uma Experiência Interdisciplinar entre as Disciplinas de Enge...Luciana Zaina
 
Instalando o MPLab X e o C18
Instalando o MPLab X e o C18Instalando o MPLab X e o C18
Instalando o MPLab X e o C18Fabio Curty
 
Guia: Instalação MPLABX e compilador XC8
Guia: Instalação MPLABX  e compilador XC8Guia: Instalação MPLABX  e compilador XC8
Guia: Instalação MPLABX e compilador XC8marcochella
 
Como Construir um Compilador cap-1
Como Construir um Compilador cap-1Como Construir um Compilador cap-1
Como Construir um Compilador cap-1Maellson Marques
 
Gerador de Código-Objeto - Compiladores
Gerador de Código-Objeto - CompiladoresGerador de Código-Objeto - Compiladores
Gerador de Código-Objeto - CompiladoresAnderson Favaro
 
Siglas de sensores e atuadores
Siglas de sensores e atuadoresSiglas de sensores e atuadores
Siglas de sensores e atuadoresSergio Favaro
 
Compilador-Analisador Léxico com FLEX + Linguagem C
Compilador-Analisador Léxico com FLEX + Linguagem C Compilador-Analisador Léxico com FLEX + Linguagem C
Compilador-Analisador Léxico com FLEX + Linguagem C Aldisio Medeiros
 
Apostila sensores e atuadores (1)
Apostila sensores e atuadores (1)Apostila sensores e atuadores (1)
Apostila sensores e atuadores (1)Daiana Paula
 

Viewers also liked (20)

Compiladores
CompiladoresCompiladores
Compiladores
 
Ficha javacc
Ficha javaccFicha javacc
Ficha javacc
 
Como Construir um compilador-cap 2
Como Construir um compilador-cap 2Como Construir um compilador-cap 2
Como Construir um compilador-cap 2
 
Trabalho
TrabalhoTrabalho
Trabalho
 
Compilers - Using Lex and YACC
Compilers - Using Lex and YACCCompilers - Using Lex and YACC
Compilers - Using Lex and YACC
 
JavaCC
JavaCCJavaCC
JavaCC
 
poscomp-Gabarito ano2010
poscomp-Gabarito ano2010poscomp-Gabarito ano2010
poscomp-Gabarito ano2010
 
[TUTORIAL] PetitParser
[TUTORIAL] PetitParser[TUTORIAL] PetitParser
[TUTORIAL] PetitParser
 
Compilador analise lexica
Compilador analise lexicaCompilador analise lexica
Compilador analise lexica
 
Poscomp-Cadernodequestes ano2011
Poscomp-Cadernodequestes ano2011Poscomp-Cadernodequestes ano2011
Poscomp-Cadernodequestes ano2011
 
poscomp-Gabarito ano2011
poscomp-Gabarito ano2011poscomp-Gabarito ano2011
poscomp-Gabarito ano2011
 
Gcc
GccGcc
Gcc
 
Compilador Web: uma Experiência Interdisciplinar entre as Disciplinas de Enge...
Compilador Web: uma Experiência Interdisciplinar entre as Disciplinas de Enge...Compilador Web: uma Experiência Interdisciplinar entre as Disciplinas de Enge...
Compilador Web: uma Experiência Interdisciplinar entre as Disciplinas de Enge...
 
Instalando o MPLab X e o C18
Instalando o MPLab X e o C18Instalando o MPLab X e o C18
Instalando o MPLab X e o C18
 
Guia: Instalação MPLABX e compilador XC8
Guia: Instalação MPLABX  e compilador XC8Guia: Instalação MPLABX  e compilador XC8
Guia: Instalação MPLABX e compilador XC8
 
Como Construir um Compilador cap-1
Como Construir um Compilador cap-1Como Construir um Compilador cap-1
Como Construir um Compilador cap-1
 
Gerador de Código-Objeto - Compiladores
Gerador de Código-Objeto - CompiladoresGerador de Código-Objeto - Compiladores
Gerador de Código-Objeto - Compiladores
 
Siglas de sensores e atuadores
Siglas de sensores e atuadoresSiglas de sensores e atuadores
Siglas de sensores e atuadores
 
Compilador-Analisador Léxico com FLEX + Linguagem C
Compilador-Analisador Léxico com FLEX + Linguagem C Compilador-Analisador Léxico com FLEX + Linguagem C
Compilador-Analisador Léxico com FLEX + Linguagem C
 
Apostila sensores e atuadores (1)
Apostila sensores e atuadores (1)Apostila sensores e atuadores (1)
Apostila sensores e atuadores (1)
 

Similar to JavaScript Libraries Future of Web Design NYC08

jQuery Makes Writing JavaScript Fun Again (for HTML5 User Group)
jQuery Makes Writing JavaScript Fun Again (for HTML5 User Group)jQuery Makes Writing JavaScript Fun Again (for HTML5 User Group)
jQuery Makes Writing JavaScript Fun Again (for HTML5 User Group)Doris Chen
 
About Best friends - HTML, CSS and JS
About Best friends - HTML, CSS and JSAbout Best friends - HTML, CSS and JS
About Best friends - HTML, CSS and JSNaga Harish M
 
How I Learned to Stop Worrying and Love jQuery (Jan 2013)
How I Learned to Stop Worrying and Love jQuery (Jan 2013)How I Learned to Stop Worrying and Love jQuery (Jan 2013)
How I Learned to Stop Worrying and Love jQuery (Jan 2013)David Giard
 
Intro to jQuery for Drupal
Intro to jQuery for DrupalIntro to jQuery for Drupal
Intro to jQuery for Drupaljhamiltoorion
 
jQuery Loves Developers - Oredev 2009
jQuery Loves Developers - Oredev 2009jQuery Loves Developers - Oredev 2009
jQuery Loves Developers - Oredev 2009Remy Sharp
 
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
 
Write Less Do More
Write Less Do MoreWrite Less Do More
Write Less Do MoreRemy Sharp
 
CT presentatie JQuery 7.12.11
CT presentatie JQuery 7.12.11CT presentatie JQuery 7.12.11
CT presentatie JQuery 7.12.11virtualsciences41
 
Django Overview
Django OverviewDjango Overview
Django OverviewBrian Tol
 
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
 
CSS3: Are you experienced?
CSS3: Are you experienced?CSS3: Are you experienced?
CSS3: Are you experienced?Denise Jacobs
 
JavaScript for Flex Devs
JavaScript for Flex DevsJavaScript for Flex Devs
JavaScript for Flex DevsAaronius
 
JavaScript!
JavaScript!JavaScript!
JavaScript!RTigger
 
Stack Overflow Austin - jQuery for Developers
Stack Overflow Austin - jQuery for DevelopersStack Overflow Austin - jQuery for Developers
Stack Overflow Austin - jQuery for DevelopersJonathan Sharp
 

Similar to JavaScript Libraries Future of Web Design NYC08 (20)

jQuery Makes Writing JavaScript Fun Again (for HTML5 User Group)
jQuery Makes Writing JavaScript Fun Again (for HTML5 User Group)jQuery Makes Writing JavaScript Fun Again (for HTML5 User Group)
jQuery Makes Writing JavaScript Fun Again (for HTML5 User Group)
 
About Best friends - HTML, CSS and JS
About Best friends - HTML, CSS and JSAbout Best friends - HTML, CSS and JS
About Best friends - HTML, CSS and JS
 
jQuery for beginners
jQuery for beginnersjQuery for beginners
jQuery for beginners
 
bcgr3-jquery
bcgr3-jquerybcgr3-jquery
bcgr3-jquery
 
bcgr3-jquery
bcgr3-jquerybcgr3-jquery
bcgr3-jquery
 
Jquery fundamentals
Jquery fundamentalsJquery fundamentals
Jquery fundamentals
 
How I Learned to Stop Worrying and Love jQuery (Jan 2013)
How I Learned to Stop Worrying and Love jQuery (Jan 2013)How I Learned to Stop Worrying and Love jQuery (Jan 2013)
How I Learned to Stop Worrying and Love jQuery (Jan 2013)
 
Intro to jQuery for Drupal
Intro to jQuery for DrupalIntro to jQuery for Drupal
Intro to jQuery for Drupal
 
jQuery Loves Developers - Oredev 2009
jQuery Loves Developers - Oredev 2009jQuery Loves Developers - Oredev 2009
jQuery Loves Developers - Oredev 2009
 
Introduction to jQuery (Ajax Exp 2006)
Introduction to jQuery (Ajax Exp 2006)Introduction to jQuery (Ajax Exp 2006)
Introduction to jQuery (Ajax Exp 2006)
 
Write Less Do More
Write Less Do MoreWrite Less Do More
Write Less Do More
 
CT presentatie JQuery 7.12.11
CT presentatie JQuery 7.12.11CT presentatie JQuery 7.12.11
CT presentatie JQuery 7.12.11
 
Django Overview
Django OverviewDjango Overview
Django Overview
 
Introduction to jQuery (Ajax Exp 2007)
Introduction to jQuery (Ajax Exp 2007)Introduction to jQuery (Ajax Exp 2007)
Introduction to jQuery (Ajax Exp 2007)
 
CSS3: Are you experienced?
CSS3: Are you experienced?CSS3: Are you experienced?
CSS3: Are you experienced?
 
JavaScript for Flex Devs
JavaScript for Flex DevsJavaScript for Flex Devs
JavaScript for Flex Devs
 
HTML5: Introduction
HTML5: IntroductionHTML5: Introduction
HTML5: Introduction
 
D3.js and SVG
D3.js and SVGD3.js and SVG
D3.js and SVG
 
JavaScript!
JavaScript!JavaScript!
JavaScript!
 
Stack Overflow Austin - jQuery for Developers
Stack Overflow Austin - jQuery for DevelopersStack Overflow Austin - jQuery for Developers
Stack Overflow Austin - jQuery for Developers
 

More from elliando dias

Nomenclatura e peças de container
Nomenclatura  e peças de containerNomenclatura  e peças de container
Nomenclatura e peças de containerelliando dias
 
How to Make an Eight Bit Computer and Save the World!
How to Make an Eight Bit Computer and Save the World!How to Make an Eight Bit Computer and Save the World!
How to Make an Eight Bit Computer and Save the World!elliando dias
 
A Practical Guide to Connecting Hardware to the Web
A Practical Guide to Connecting Hardware to the WebA Practical Guide to Connecting Hardware to the Web
A Practical Guide to Connecting Hardware to the Webelliando dias
 
Introdução ao Arduino
Introdução ao ArduinoIntrodução ao Arduino
Introdução ao Arduinoelliando dias
 
Incanter Data Sorcery
Incanter Data SorceryIncanter Data Sorcery
Incanter Data Sorceryelliando dias
 
Fab.in.a.box - Fab Academy: Machine Design
Fab.in.a.box - Fab Academy: Machine DesignFab.in.a.box - Fab Academy: Machine Design
Fab.in.a.box - Fab Academy: Machine Designelliando dias
 
The Digital Revolution: Machines that makes
The Digital Revolution: Machines that makesThe Digital Revolution: Machines that makes
The Digital Revolution: Machines that makeselliando dias
 
Hadoop - Simple. Scalable.
Hadoop - Simple. Scalable.Hadoop - Simple. Scalable.
Hadoop - Simple. Scalable.elliando dias
 
Hadoop and Hive Development at Facebook
Hadoop and Hive Development at FacebookHadoop and Hive Development at Facebook
Hadoop and Hive Development at Facebookelliando dias
 
Multi-core Parallelization in Clojure - a Case Study
Multi-core Parallelization in Clojure - a Case StudyMulti-core Parallelization in Clojure - a Case Study
Multi-core Parallelization in Clojure - a Case Studyelliando dias
 
From Lisp to Clojure/Incanter and RAn Introduction
From Lisp to Clojure/Incanter and RAn IntroductionFrom Lisp to Clojure/Incanter and RAn Introduction
From Lisp to Clojure/Incanter and RAn Introductionelliando dias
 
FleetDB A Schema-Free Database in Clojure
FleetDB A Schema-Free Database in ClojureFleetDB A Schema-Free Database in Clojure
FleetDB A Schema-Free Database in Clojureelliando dias
 
Clojure and The Robot Apocalypse
Clojure and The Robot ApocalypseClojure and The Robot Apocalypse
Clojure and The Robot Apocalypseelliando dias
 
Clojure - A new Lisp
Clojure - A new LispClojure - A new Lisp
Clojure - A new Lispelliando dias
 
Clojure - An Introduction for Lisp Programmers
Clojure - An Introduction for Lisp ProgrammersClojure - An Introduction for Lisp Programmers
Clojure - An Introduction for Lisp Programmerselliando dias
 

More from elliando dias (20)

Nomenclatura e peças de container
Nomenclatura  e peças de containerNomenclatura  e peças de container
Nomenclatura e peças de container
 
Geometria Projetiva
Geometria ProjetivaGeometria Projetiva
Geometria Projetiva
 
How to Make an Eight Bit Computer and Save the World!
How to Make an Eight Bit Computer and Save the World!How to Make an Eight Bit Computer and Save the World!
How to Make an Eight Bit Computer and Save the World!
 
Ragel talk
Ragel talkRagel talk
Ragel talk
 
A Practical Guide to Connecting Hardware to the Web
A Practical Guide to Connecting Hardware to the WebA Practical Guide to Connecting Hardware to the Web
A Practical Guide to Connecting Hardware to the Web
 
Introdução ao Arduino
Introdução ao ArduinoIntrodução ao Arduino
Introdução ao Arduino
 
Minicurso arduino
Minicurso arduinoMinicurso arduino
Minicurso arduino
 
Incanter Data Sorcery
Incanter Data SorceryIncanter Data Sorcery
Incanter Data Sorcery
 
Rango
RangoRango
Rango
 
Fab.in.a.box - Fab Academy: Machine Design
Fab.in.a.box - Fab Academy: Machine DesignFab.in.a.box - Fab Academy: Machine Design
Fab.in.a.box - Fab Academy: Machine Design
 
The Digital Revolution: Machines that makes
The Digital Revolution: Machines that makesThe Digital Revolution: Machines that makes
The Digital Revolution: Machines that makes
 
Hadoop + Clojure
Hadoop + ClojureHadoop + Clojure
Hadoop + Clojure
 
Hadoop - Simple. Scalable.
Hadoop - Simple. Scalable.Hadoop - Simple. Scalable.
Hadoop - Simple. Scalable.
 
Hadoop and Hive Development at Facebook
Hadoop and Hive Development at FacebookHadoop and Hive Development at Facebook
Hadoop and Hive Development at Facebook
 
Multi-core Parallelization in Clojure - a Case Study
Multi-core Parallelization in Clojure - a Case StudyMulti-core Parallelization in Clojure - a Case Study
Multi-core Parallelization in Clojure - a Case Study
 
From Lisp to Clojure/Incanter and RAn Introduction
From Lisp to Clojure/Incanter and RAn IntroductionFrom Lisp to Clojure/Incanter and RAn Introduction
From Lisp to Clojure/Incanter and RAn Introduction
 
FleetDB A Schema-Free Database in Clojure
FleetDB A Schema-Free Database in ClojureFleetDB A Schema-Free Database in Clojure
FleetDB A Schema-Free Database in Clojure
 
Clojure and The Robot Apocalypse
Clojure and The Robot ApocalypseClojure and The Robot Apocalypse
Clojure and The Robot Apocalypse
 
Clojure - A new Lisp
Clojure - A new LispClojure - A new Lisp
Clojure - A new Lisp
 
Clojure - An Introduction for Lisp Programmers
Clojure - An Introduction for Lisp ProgrammersClojure - An Introduction for Lisp Programmers
Clojure - An Introduction for Lisp Programmers
 

Recently uploaded

Potential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsPotential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsRavi Sanghani
 
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...Nikki Chapple
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesThousandEyes
 
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
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxLoriGlavin3
 
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfSo einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfpanagenda
 
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
 
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
 
Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterScale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterMydbops
 
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
 
Varsha Sewlal- Cyber Attacks on Critical Critical Infrastructure
Varsha Sewlal- Cyber Attacks on Critical Critical InfrastructureVarsha Sewlal- Cyber Attacks on Critical Critical Infrastructure
Varsha Sewlal- Cyber Attacks on Critical Critical Infrastructureitnewsafrica
 
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Farhan Tariq
 
React Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App FrameworkReact Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App FrameworkPixlogix Infotech
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
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
 
A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI AgeCprime
 
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
 
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Mark Goldstein
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 

Recently uploaded (20)

Potential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsPotential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and Insights
 
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
 
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
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
 
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfSo einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
 
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
 
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
 
Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterScale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL Router
 
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...
 
Varsha Sewlal- Cyber Attacks on Critical Critical Infrastructure
Varsha Sewlal- Cyber Attacks on Critical Critical InfrastructureVarsha Sewlal- Cyber Attacks on Critical Critical Infrastructure
Varsha Sewlal- Cyber Attacks on Critical Critical Infrastructure
 
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...
 
React Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App FrameworkReact Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App Framework
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
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
 
A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI Age
 
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
 
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 

JavaScript Libraries Future of Web Design NYC08

  • 2. Karl Swedberg • Email: karl@learningjquery.com • Twitter: @kswedberg • Slides, links, and examples: training.learningjquery.com
  • 4. Roseland Ballroom You can … Be like Glenn
  • 5. Why Use JavaScript? • Keep HTML squeaky clean • User Interaction & immediate feedback • Server interaction without page refresh
  • 6. Why Not Use Flash? • Flash is great! • You should use it. • But it’s not the answer to every question, or the solution to every problem
  • 7. Why Use a JavaScript Library? • Crazy fast development • Cross-browser solutions without the mess • Leverage what you already know about HTML & CSS • Better CSS support than CSS (cf. www.quirksmode.org)
  • 8. Why Use a JavaScript Library? • Animation, movement, effects with ease • Painlessly Unobtrusive • Encourages Progressive Enhancement
  • 9. What’s Available? • Prototype / Scriptaculous • Dojo Toolkit • Mootools • YUI :Yahoo! User Interface • jQuery The Big Five:
  • 11. Dojo • www.dojotoolkit.org • Dojo Core • Dijit • DojoX
  • 12. Mootools • mootools.net • mootorial.com • Extensions: • clientcide.com • mooforum.net • esteak.net
  • 13. Yahoo! User Interface YUI • developer.yahoo.com/yui
  • 14. jQuery • jquery.com • Plugins: plugins.jquery.com • jQuery UI: ui.jquery.com
  • 15. What’s Available? • Mochikit • Adobe Spry • SproutCore • Cappuccino • ExtJS • DOMAssistant • base2 • DED|Chain • JavaScriptMVC • qooxdoo • midori • June • UIZE • SimpleJS • fleegix.js • Foundation • GWT • and many more! Others:
  • 16. What Can They Do For Me? • Find elements on a web page. • Do something with them.
  • 17. What Can They Do For Me? • Insert, copy, move, remove elements. • Change their attributes, their appearance. • Animate them – with slides, fades, scales, and all manner of movement.
  • 18. What Can They Do For Me? • Incorporate “widgets” (date pickers, dialogs, data grids, sliders, etc.) • Send information to the server. • And receive information from the server. • And do stuff with that information. • Help with more “programmery” things.
  • 19. What Do they look like? • A lot more familiar than you might expect.
  • 20. A lot like CSS • element {} div: <div> • #id {} #myid: <h2 id="myid"> • .class {} .myclass: <p class="myclass"> • selector1, selector2 {} p, a: <p></p><a></a> • ancestor descendant {} p span: <p><span><span> • parent > child {} p > span: <p><span><span> • :nth-child() {} li:nth-child(2): <ul><li><li> http://www.w3.org/TR/css3-selectors/
  • 21. A lot like CSS • $('element') div: <div> • $('#id') #myid: <h2 id="myid"> • $('.class') .myclass: <p class="myclass"> • $('selector1, selector2') p, a: <p></p><a></a> • $('ancestor descendant') p span: <p><span><span> • $('parent > child') p > span: <p><span><span> • $(':nth-child()') li:nth-child(2): <ul><li><li> http://docs.jquery.com/Selectors
  • 22. A lot like real words $('#myid span') .addClass('newclass') .parents('div:first') .fadeIn('slow') .find('a') .click(function() { confirm('You really wanna go there?'); });
  • 23. A lot like real words $('#policy-cta a') .media({ width: 500, height: 300, flashVars: { autostart: 'true', controlbar: 'none', flvPath: '/assets/videos/intro.flv' } });
  • 24. Basic Example 1 Table row striping • jQuery $('tr:nth-child(odd)').addClass('alt'); • Mootools $$('tr:odd').addClass('alt'); • Dojo dojo.query('tr:nth-child(odd)').addClass('alt');
  • 25. Basic Example 2 Hover • Dojo dojo.query('tr') .onmouseenter(function(e) { e.target.className += ' highlight'; }) .onmouseleave(function(e) { e.target.className = e.target.className .replace(/ highlight/, ''); });
  • 26. Basic Example 2 Hover • Mootools $$('tr').addEvents({ mouseover: function() { this.addClass('highlight'); }, mouseout: function() { this.removeClass('highlight'); } });
  • 27. Basic Example 2 Hover • jQuery $('tr') .mouseover(function() { $(this).addClass('highlight'); }) .mouseout( function() { $(this).removeClass('highlight'); });
  • 28. Basic Example 2 Hover • jQuery $('tr').hover(function() { $(this).addClass('highlight'); }, function() { $(this).removeClass('highlight'); });
  • 30. How Do I Choose? • Library Maturity (alpha, beta, number of releases? Unit tests?) • Documentation (official, unofficial, online, offline, books?) • Community (Forums, Google groups, blogs, IRC, Twitter? Tone, helpfulness, responsiveness?) • Project requirements (web site or application? ajax, effects, events?) • Performance (benchmarks?)
  • 31. How Do I Choose? • Server-side Framework (Does it come bundled with a JS library?) • Extensibility (Plugins, widgets, components available and easy to find? Create your own easily?) • Style (What does the code look like? Is it easy to figure out what's going on? Does it look familiar at all?) • Commitment to Unobtrusive JavaScript and Accessibility • Cost and Licensing (fee? open source? MIT, GNU, GPL, LGPL, BSD, etc.)
  • 32. How Do I Get Them? • Go to their websites
  • 33. How Do I Get Them? • Go to their websites • dojotoolkit.org • jquery.com • mootools.net • prototypejs.org • developer.yahoo.com/yui
  • 34. How Do I Get Them? • Go to the Google AJAX Libraries API code.google.com/apis/ajaxlibs/