Top Banner
1 The Yahoo! User Interface Library (YUI) Nate Koechley [email protected] http://nate.koechley.com/blog Refresh 06 Orlando, Florida 2006.11.17
70

the yui library - Nate Koechleynate.koechley.com/talks/2006/11/refresh06/YUI.pdf · 3 The Yahoo! Developer Network • Utility and Data Web Services • Design Patterns Library •

Feb 10, 2018

Download

Documents

phamthuan
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: the yui library - Nate Koechleynate.koechley.com/talks/2006/11/refresh06/YUI.pdf · 3 The Yahoo! Developer Network • Utility and Data Web Services • Design Patterns Library •

1

The Yahoo! User Interface Library (YUI)

Nate Koechley [email protected]://nate.koechley.com/blog

Refresh 06Orlando, Florida

2006.11.17

Page 2: the yui library - Nate Koechleynate.koechley.com/talks/2006/11/refresh06/YUI.pdf · 3 The Yahoo! Developer Network • Utility and Data Web Services • Design Patterns Library •

2

YUI

http://www.flickr.com/photos/cdm/50688378/in/set-1002108/

Page 3: the yui library - Nate Koechleynate.koechley.com/talks/2006/11/refresh06/YUI.pdf · 3 The Yahoo! Developer Network • Utility and Data Web Services • Design Patterns Library •

3

The Yahoo! Developer Network

• Utility and Data Web Services• Design Patterns Library• Browser Support Guidelines• Yahoo! User Interface Library (YUI)

Page 4: the yui library - Nate Koechleynate.koechley.com/talks/2006/11/refresh06/YUI.pdf · 3 The Yahoo! Developer Network • Utility and Data Web Services • Design Patterns Library •

4

The Yahoo! Developer Network Ecosystem:Utility and Data Web Services

Services

Browser Based Authenticatio (BBAuth), Answers, Local, Maps, Photos, Search, Shopping, Travel, Utilities, (Mail coming soon)

Hackable Sites

del.icio.us, Flickr, Upcoming.org, WebjayBurnable Feeds

Finance, HotJobs, RSS Feeds, Traffic, WeatherSDKs

Messenger, Music, Search Developer Kit, WidgetsDeveloper Centers

JavaScript, Flash, .NET, PHP, Python, Ruby

Page 5: the yui library - Nate Koechleynate.koechley.com/talks/2006/11/refresh06/YUI.pdf · 3 The Yahoo! Developer Network • Utility and Data Web Services • Design Patterns Library •

5

The Yahoo! Developer Network Ecosystem:Design Patterns

Page 6: the yui library - Nate Koechleynate.koechley.com/talks/2006/11/refresh06/YUI.pdf · 3 The Yahoo! Developer Network • Utility and Data Web Services • Design Patterns Library •

6

The Yahoo! Developer Network Ecosystem:Design Patterns

Page 7: the yui library - Nate Koechleynate.koechley.com/talks/2006/11/refresh06/YUI.pdf · 3 The Yahoo! Developer Network • Utility and Data Web Services • Design Patterns Library •

7

The Yahoo! Developer Network Ecosystem:Design Patterns

Page 8: the yui library - Nate Koechleynate.koechley.com/talks/2006/11/refresh06/YUI.pdf · 3 The Yahoo! Developer Network • Utility and Data Web Services • Design Patterns Library •

8

The Yahoo! Developer Network Ecosystem:Browser Support Guidelines

Page 9: the yui library - Nate Koechleynate.koechley.com/talks/2006/11/refresh06/YUI.pdf · 3 The Yahoo! Developer Network • Utility and Data Web Services • Design Patterns Library •

9

The Yahoo! Developer Network Ecosystem:Browser Support Guidelines

Page 10: the yui library - Nate Koechleynate.koechley.com/talks/2006/11/refresh06/YUI.pdf · 3 The Yahoo! Developer Network • Utility and Data Web Services • Design Patterns Library •

10

Page 11: the yui library - Nate Koechleynate.koechley.com/talks/2006/11/refresh06/YUI.pdf · 3 The Yahoo! Developer Network • Utility and Data Web Services • Design Patterns Library •

11

Why?

Page 12: the yui library - Nate Koechleynate.koechley.com/talks/2006/11/refresh06/YUI.pdf · 3 The Yahoo! Developer Network • Utility and Data Web Services • Design Patterns Library •

12

changing seasons

on the webhttp://flickr.com/photos/getthebubbles/107463768/

Page 13: the yui library - Nate Koechleynate.koechley.com/talks/2006/11/refresh06/YUI.pdf · 3 The Yahoo! Developer Network • Utility and Data Web Services • Design Patterns Library •

13

People expect less online.

Page 14: the yui library - Nate Koechleynate.koechley.com/talks/2006/11/refresh06/YUI.pdf · 3 The Yahoo! Developer Network • Utility and Data Web Services • Design Patterns Library •

14

But we are online…

Page 15: the yui library - Nate Koechleynate.koechley.com/talks/2006/11/refresh06/YUI.pdf · 3 The Yahoo! Developer Network • Utility and Data Web Services • Design Patterns Library •

15

… and tied to the browser.

Page 16: the yui library - Nate Koechleynate.koechley.com/talks/2006/11/refresh06/YUI.pdf · 3 The Yahoo! Developer Network • Utility and Data Web Services • Design Patterns Library •

16

So we must

levelthe playing field.

http://www.flickr.com/photos/probek/44480413/

Page 17: the yui library - Nate Koechleynate.koechley.com/talks/2006/11/refresh06/YUI.pdf · 3 The Yahoo! Developer Network • Utility and Data Web Services • Design Patterns Library •

17

how?

Page 18: the yui library - Nate Koechleynate.koechley.com/talks/2006/11/refresh06/YUI.pdf · 3 The Yahoo! Developer Network • Utility and Data Web Services • Design Patterns Library •

18

it takes 2 things

http://flickr.com/photos/latitudes/104286031/

Page 19: the yui library - Nate Koechleynate.koechley.com/talks/2006/11/refresh06/YUI.pdf · 3 The Yahoo! Developer Network • Utility and Data Web Services • Design Patterns Library •

19

We mustimprove our technology

Page 20: the yui library - Nate Koechleynate.koechley.com/talks/2006/11/refresh06/YUI.pdf · 3 The Yahoo! Developer Network • Utility and Data Web Services • Design Patterns Library •

20

Dat

a Tr

ansp

ort

data

:cus

tom

, xm

l,js

onbe

havi

or:j

sm

ixed

:new

xht

ml,

(X)HTML DOM JavaScript

SpecificationImplementation

Defects[ Theory / Practice ]

BOM API

DOM API

CSS

MacintoshSafari Firefox Opera

WindowsOperaIE5, 6, 7 Firefox

Linux, Unix, Mobile10,000+ UAs

Page 21: the yui library - Nate Koechleynate.koechley.com/talks/2006/11/refresh06/YUI.pdf · 3 The Yahoo! Developer Network • Utility and Data Web Services • Design Patterns Library •

21

Dat

a Tr

ansp

ort

data

:cus

tom

, xm

l,js

onbe

havi

or:j

sm

ixed

:new

xht

ml,

(X)HTML DOM JavaScript

SpecificationImplementation

Defects[ Theory / Practice ]

BOM API

DOM API

CSS

MacintoshSafari Firefox Opera

WindowsOperaIE5, 6, 7 Firefox

Linux, Unix, Mobile10,000+ UAs

knowledge areas: 7dimensions: x 4

platforms: x 3browsers per platform: x 4

rendering modes: x 2

Page 22: the yui library - Nate Koechleynate.koechley.com/talks/2006/11/refresh06/YUI.pdf · 3 The Yahoo! Developer Network • Utility and Data Web Services • Design Patterns Library •

22

(we need a robust platform!)

Page 23: the yui library - Nate Koechleynate.koechley.com/talks/2006/11/refresh06/YUI.pdf · 3 The Yahoo! Developer Network • Utility and Data Web Services • Design Patterns Library •

23

and

raise expectations

Page 24: the yui library - Nate Koechleynate.koechley.com/talks/2006/11/refresh06/YUI.pdf · 3 The Yahoo! Developer Network • Utility and Data Web Services • Design Patterns Library •

24

(so users engage and explore with confidence!)

Page 25: the yui library - Nate Koechleynate.koechley.com/talks/2006/11/refresh06/YUI.pdf · 3 The Yahoo! Developer Network • Utility and Data Web Services • Design Patterns Library •

25http://flickr.com/photos/niznoz/81087641/

DESIGNDEVEL

Page 26: the yui library - Nate Koechleynate.koechley.com/talks/2006/11/refresh06/YUI.pdf · 3 The Yahoo! Developer Network • Utility and Data Web Services • Design Patterns Library •

26

{design}

from Implementation Models

to Mental Models

Page 27: the yui library - Nate Koechleynate.koechley.com/talks/2006/11/refresh06/YUI.pdf · 3 The Yahoo! Developer Network • Utility and Data Web Services • Design Patterns Library •

27

{development}

from Heterogeneous Environments

to Compelling and Consistent APIs

Page 28: the yui library - Nate Koechleynate.koechley.com/talks/2006/11/refresh06/YUI.pdf · 3 The Yahoo! Developer Network • Utility and Data Web Services • Design Patterns Library •

28

Nuts and Bolts

http://flickr.com/photos/snood/129758197/

Page 29: the yui library - Nate Koechleynate.koechley.com/talks/2006/11/refresh06/YUI.pdf · 3 The Yahoo! Developer Network • Utility and Data Web Services • Design Patterns Library •

29

Sixcommitments

to the platform

Page 30: the yui library - Nate Koechleynate.koechley.com/talks/2006/11/refresh06/YUI.pdf · 3 The Yahoo! Developer Network • Utility and Data Web Services • Design Patterns Library •

30

1] Meet properties where they are today. Facilitate incremental

enhancement(“Transitional Internet Applications”)

Page 31: the yui library - Nate Koechleynate.koechley.com/talks/2006/11/refresh06/YUI.pdf · 3 The Yahoo! Developer Network • Utility and Data Web Services • Design Patterns Library •

31

2] Provide a broad, inclusive platform for Web 2.0’s “Rich

Internet Application”development

(a la carte, not framework)

Page 32: the yui library - Nate Koechleynate.koechley.com/talks/2006/11/refresh06/YUI.pdf · 3 The Yahoo! Developer Network • Utility and Data Web Services • Design Patterns Library •

32

3] Extensible and adaptive, to meet the needs of our diverse

product portfolio(lots of different contexts)

Page 33: the yui library - Nate Koechleynate.koechley.com/talks/2006/11/refresh06/YUI.pdf · 3 The Yahoo! Developer Network • Utility and Data Web Services • Design Patterns Library •

33

4] Support all A-grade browsers – an evolving and still demanding challenge

(Graded Browser Support)

http://developer.yahoo.com/yui/articles/gbs/gbs.html

Page 34: the yui library - Nate Koechleynate.koechley.com/talks/2006/11/refresh06/YUI.pdf · 3 The Yahoo! Developer Network • Utility and Data Web Services • Design Patterns Library •

34

5] Support our scale and scope(industrial grade)

Page 35: the yui library - Nate Koechleynate.koechley.com/talks/2006/11/refresh06/YUI.pdf · 3 The Yahoo! Developer Network • Utility and Data Web Services • Design Patterns Library •

35

6] Be responsive and accountable to the community of

designers and engineers(your P1 bugs are our P1 bugs)

Page 36: the yui library - Nate Koechleynate.koechley.com/talks/2006/11/refresh06/YUI.pdf · 3 The Yahoo! Developer Network • Utility and Data Web Services • Design Patterns Library •

36

Learn from Desktop History

Adapted from Alan Cooper’s “About Face 2.0” Book

Page 37: the yui library - Nate Koechleynate.koechley.com/talks/2006/11/refresh06/YUI.pdf · 3 The Yahoo! Developer Network • Utility and Data Web Services • Design Patterns Library •

37

[primitives]

[compounds]

[idioms]

Connection Manager (Ajax)Connection Manager (Ajax) Event UtilityEvent Utility

Dom CollectionDom Collection

Drag & DropDrag & DropAnimationAnimation

Logger ControlLogger Control

Menu ControlMenu Control

SliderSliderTreeViewTreeView

Calendar ControlCalendar Control

AutoCompleteAutoComplete

The Yahoo! User Interface (YUI) Library

DHTML WindowingDHTML Windowing

CSS Reset, Fonts, GridsCSS Reset, Fonts, GridsLoaderLoader

TabViewTabView

Page 38: the yui library - Nate Koechleynate.koechley.com/talks/2006/11/refresh06/YUI.pdf · 3 The Yahoo! Developer Network • Utility and Data Web Services • Design Patterns Library •

38

YUI DOM Collection

• isAncestor(parent, potentialChild) • inDocument(el) • getDocumentHeight, getDocumentWidth• getViewportHeight, getViewportWidth• getElementsBy

– YAHOO.util.Dom.getElementsBy(function(el) { return (/^http:\/\/www\.yahoo\.com/. test(el.getAttribute('href'))); }, 'a', 'content'));

• Class management utilities

Page 39: the yui library - Nate Koechleynate.koechley.com/talks/2006/11/refresh06/YUI.pdf · 3 The Yahoo! Developer Network • Utility and Data Web Services • Design Patterns Library •

39

YUI Event

• Event– Flexible batch assignment– onAvailable and onContentReady– Scope correction and assignment– Automatic cleanup – Custom Events

Page 40: the yui library - Nate Koechleynate.koechley.com/talks/2006/11/refresh06/YUI.pdf · 3 The Yahoo! Developer Network • Utility and Data Web Services • Design Patterns Library •

40

YUI Event’s Custom Events

• var myEvent = new YAHOO.util.CustomEvent('myEvent');

• myEvent.subscribe(function() { alert('event fired'); });

• myEvent.fire();

Page 41: the yui library - Nate Koechleynate.koechley.com/talks/2006/11/refresh06/YUI.pdf · 3 The Yahoo! Developer Network • Utility and Data Web Services • Design Patterns Library •

41

YUI Animation

var anim = new YAHOO.util.Anim(el, { width: {to: 400},

height: {by: 400, unit: 'em' },

opacity: {from: 0, to: 1}

1);

anim.animate();

• Includes support for Bezier math control

Page 42: the yui library - Nate Koechleynate.koechley.com/talks/2006/11/refresh06/YUI.pdf · 3 The Yahoo! Developer Network • Utility and Data Web Services • Design Patterns Library •

42

YUI Connection

• File uploading in addition to XHR– Easy implementation of file uploading across

the A-Grade browsers– Use the upload member of the callback

object (instead of "success" or "failure")

• XHR callback with extra arguments

Page 43: the yui library - Nate Koechleynate.koechley.com/talks/2006/11/refresh06/YUI.pdf · 3 The Yahoo! Developer Network • Utility and Data Web Services • Design Patterns Library •

43

YUI Container Family

Page 44: the yui library - Nate Koechleynate.koechley.com/talks/2006/11/refresh06/YUI.pdf · 3 The Yahoo! Developer Network • Utility and Data Web Services • Design Patterns Library •

44

Drag and Drop

• It’s easy, sorta, but easy to get wrong too• Point, Region, Multiple Handles, !Handles• Exposes 15 interesting moments

Page 45: the yui library - Nate Koechleynate.koechley.com/talks/2006/11/refresh06/YUI.pdf · 3 The Yahoo! Developer Network • Utility and Data Web Services • Design Patterns Library •

45

Storyboard Template for Drag & Drop

What happens when the mouse is pressed on the draggable object but dragging has not initiated?

What happens when the mouse is pressed on the draggable object but dragging has not initiated?

Page 46: the yui library - Nate Koechleynate.koechley.com/talks/2006/11/refresh06/YUI.pdf · 3 The Yahoo! Developer Network • Utility and Data Web Services • Design Patterns Library •

46

YUI Logger and Firebug

• alert(“stop the insanity”);

• YAHOO.log(“There IS a better way”);

• Debug with Logger or Firebug directly.

Page 47: the yui library - Nate Koechleynate.koechley.com/talks/2006/11/refresh06/YUI.pdf · 3 The Yahoo! Developer Network • Utility and Data Web Services • Design Patterns Library •

47

CSS Grids

• Page Widths• Template Presets• Nesting Grids

• Together, 200 layouts for 2kb.

Page 48: the yui library - Nate Koechleynate.koechley.com/talks/2006/11/refresh06/YUI.pdf · 3 The Yahoo! Developer Network • Utility and Data Web Services • Design Patterns Library •

48

About YUI Page Weight

http://yuiblog.com/blog/2006/10/16/pageweight-yui0114/

Page 49: the yui library - Nate Koechleynate.koechley.com/talks/2006/11/refresh06/YUI.pdf · 3 The Yahoo! Developer Network • Utility and Data Web Services • Design Patterns Library •

49

À la carte Dependencies

Page 50: the yui library - Nate Koechleynate.koechley.com/talks/2006/11/refresh06/YUI.pdf · 3 The Yahoo! Developer Network • Utility and Data Web Services • Design Patterns Library •

50

Lightweight CSS Foundation

Page 51: the yui library - Nate Koechleynate.koechley.com/talks/2006/11/refresh06/YUI.pdf · 3 The Yahoo! Developer Network • Utility and Data Web Services • Design Patterns Library •

51

Why Open Source?

Page 52: the yui library - Nate Koechleynate.koechley.com/talks/2006/11/refresh06/YUI.pdf · 3 The Yahoo! Developer Network • Utility and Data Web Services • Design Patterns Library •

52

What about the timeline?

• 2005, January

– Initial development– One-person team

• 2005, July

– Initial internal release• 2006, February 13th

– Open-source release– #1 on Delicious, Digg,

Techmeme– 36,000 downloads

• 2006, September 18th

– 3000th member on ydn-javascript

• 2006, November 7th

– Linux Journal Editor’s Choice Award: Best Software Library

– 300k downloads• 2006, November 13th

– Current release– 9 person team

Page 53: the yui library - Nate Koechleynate.koechley.com/talks/2006/11/refresh06/YUI.pdf · 3 The Yahoo! Developer Network • Utility and Data Web Services • Design Patterns Library •

53

What about the namespace?

(because I really like $)

Page 54: the yui library - Nate Koechleynate.koechley.com/talks/2006/11/refresh06/YUI.pdf · 3 The Yahoo! Developer Network • Utility and Data Web Services • Design Patterns Library •

54

Global Variables are Evil

• Ideally, only a single global per app|lib|widget• Speed unaffected; self documentation; reliable• Shorten locally if you want.

• var $ = YAHOO.util.Dom.get;

• http://yuiblog.com/blog/2006/06/01/global-domination/

Page 55: the yui library - Nate Koechleynate.koechley.com/talks/2006/11/refresh06/YUI.pdf · 3 The Yahoo! Developer Network • Utility and Data Web Services • Design Patterns Library •

55

What’s in the distribution?

• 100s of files– All examples– All documentation– All development builds– All production builds– All minimized builds

Page 56: the yui library - Nate Koechleynate.koechley.com/talks/2006/11/refresh06/YUI.pdf · 3 The Yahoo! Developer Network • Utility and Data Web Services • Design Patterns Library •

56

Yahoo! is powered by the exact same bits we

offer to you.

Page 57: the yui library - Nate Koechleynate.koechley.com/talks/2006/11/refresh06/YUI.pdf · 3 The Yahoo! Developer Network • Utility and Data Web Services • Design Patterns Library •

57

What is the license?The most-open there is: BSD

Page 58: the yui library - Nate Koechleynate.koechley.com/talks/2006/11/refresh06/YUI.pdf · 3 The Yahoo! Developer Network • Utility and Data Web Services • Design Patterns Library •

58

Who’s Using It?

Page 59: the yui library - Nate Koechleynate.koechley.com/talks/2006/11/refresh06/YUI.pdf · 3 The Yahoo! Developer Network • Utility and Data Web Services • Design Patterns Library •

59

External Implementations

• Wall Street Journal• Technorati• IndyCar.com• SugarCRM• SmugMug

• PayPal• eBay• Yuriz• PowerReviews.com• Madonet• You?

Page 60: the yui library - Nate Koechleynate.koechley.com/talks/2006/11/refresh06/YUI.pdf · 3 The Yahoo! Developer Network • Utility and Data Web Services • Design Patterns Library •

60

Documentation?

Page 61: the yui library - Nate Koechleynate.koechley.com/talks/2006/11/refresh06/YUI.pdf · 3 The Yahoo! Developer Network • Utility and Data Web Services • Design Patterns Library •

61

Landing Page Guides

Page 62: the yui library - Nate Koechleynate.koechley.com/talks/2006/11/refresh06/YUI.pdf · 3 The Yahoo! Developer Network • Utility and Data Web Services • Design Patterns Library •

62

Complete API Documentation

Page 63: the yui library - Nate Koechleynate.koechley.com/talks/2006/11/refresh06/YUI.pdf · 3 The Yahoo! Developer Network • Utility and Data Web Services • Design Patterns Library •

63

Examples and Tutorials

Page 64: the yui library - Nate Koechleynate.koechley.com/talks/2006/11/refresh06/YUI.pdf · 3 The Yahoo! Developer Network • Utility and Data Web Services • Design Patterns Library •

64

The YUI Cheat Sheets

Page 65: the yui library - Nate Koechleynate.koechley.com/talks/2006/11/refresh06/YUI.pdf · 3 The Yahoo! Developer Network • Utility and Data Web Services • Design Patterns Library •

65

Team Blog

Page 66: the yui library - Nate Koechleynate.koechley.com/talks/2006/11/refresh06/YUI.pdf · 3 The Yahoo! Developer Network • Utility and Data Web Services • Design Patterns Library •

66

Is there a community?

• http://yuiblog.com• http://groups.yahoo.com/group/ydn-javascript• http://www.jackslocum.com/yui/ YUI.ext• http://blog.davglass.com/ YUI.addons• SourceForge

Page 67: the yui library - Nate Koechleynate.koechley.com/talks/2006/11/refresh06/YUI.pdf · 3 The Yahoo! Developer Network • Utility and Data Web Services • Design Patterns Library •

67

Jack Slocum

Page 68: the yui library - Nate Koechleynate.koechley.com/talks/2006/11/refresh06/YUI.pdf · 3 The Yahoo! Developer Network • Utility and Data Web Services • Design Patterns Library •

68

How is it different from GWT?

We believe in JavaScript.

Page 69: the yui library - Nate Koechleynate.koechley.com/talks/2006/11/refresh06/YUI.pdf · 3 The Yahoo! Developer Network • Utility and Data Web Services • Design Patterns Library •

69

Thanks!nate.koechley.com/talks/2006/11/refresh06/YUI/

• Nate Koechley:– [email protected] | [email protected]– http://nate.koechley.com/blog

• Yahoo! Developer Network & Y! UI Blog:– http://developer.yahoo.com– http://developer.yahoo.com/yui– http://developer.yahoo.com/ypatterns– http://www.yuiblog.com– http://groups.yahoo.com/group/ydn-javascript

Page 70: the yui library - Nate Koechleynate.koechley.com/talks/2006/11/refresh06/YUI.pdf · 3 The Yahoo! Developer Network • Utility and Data Web Services • Design Patterns Library •

70

We’re Hiring!

Josie Aguada: [email protected]

Usual suspects:

JavaScript, PHP, CSS, HTML, ActionScript…