ydn kr tech talk : yui 3.0

29
YUI() An Introduction to YUI 3 Jenny Han Donnelly YUI Library

Upload: jinho-jung

Post on 18-May-2015

2.374 views

Category:

Documents


0 download

DESCRIPTION

YUI() - An Introduction to YUI 3 by Jenny Han Donnelly , YUI Library Team , Yahoo Sunnyvale Introducing YUI 3 Lighter,Easier, Faster The Sandbox ModelOptimized LoadingProtection from Other Modules Sub-Module ArchitectureExtension and Plugin ArchitectureYUI 3 Node API The Event System Read http://developer.yahoo.com/yui/3 Discuss http://yuilibrary.com/forum/viewforum.php?f=15 http://github.com/yui/yui3/tree/master

TRANSCRIPT

Page 1: YDN KR Tech Talk : YUI 3.0

YUI()An Introduction to YUI 3

Jenny Han Donnelly

YUI Library

Page 2: YDN KR Tech Talk : YUI 3.0

YUI Library Overview

Core

Utilities

Widgets

CSS

Page 3: YDN KR Tech Talk : YUI 3.0

Introducing YUI 3

Lighter

Easier

Faster

Page 4: YDN KR Tech Talk : YUI 3.0

The Sandbox Model

Page 5: YDN KR Tech Talk : YUI 3.0

The Sandbox Model

<script src="yui-min.js">

<script>

YUI().use("anim", function(Y) {

...

});

</script>

Page 6: YDN KR Tech Talk : YUI 3.0

Optimized Loading

<script src="yui-min.js">

<script>YUI().use("anim", function(Y) {

});</script>

<script src="http://yui.yahooapis.com/combo?oop-min.js&event-min.js..">

<script src="oop-min.js">

<script src="event-min.js">

<script src="attribute-min.js">

<script src="base-min.js">

<script src="dom-min.js">

<script src="node-min.js">

<script src="anim-min.js">

var a = new Y.Anim({...});

a.run();

Page 7: YDN KR Tech Talk : YUI 3.0

Protection from Other Modules

<script src="http://yui.yahooapis.com/3.4/build/yui/yui-min.js">

<script> YUI().use("financeapp", function(Y) { ... }); </script>

<script src="http://yui.yahooapis.com/3.0/build/yui/yui-min.js">

<script> YUI().use("moviesapp", function(Y) {

... }); </script>

Page 8: YDN KR Tech Talk : YUI 3.0

The YUI Buffet

Page 9: YDN KR Tech Talk : YUI 3.0

Sub-Module Architecture

io : All IO functionality (7.4K)

– io-base : Core XHR functionality (3.3K)

– io-form : Form mining support (1K)

– io-queue : Transaction Queuing support (0.7K)

– io-upload : File upload support (1.7K)

– io-xdr : Cross domain support (0.7K)

YUI().use("io-base", function(Y) {…})YUI().use("io-form", "io-xdr", function(Y) {…})YUI().use("io", function(Y) {…})

Page 10: YDN KR Tech Talk : YUI 3.0

IO's K-Weight Profile

0

1

2

3

4

5

6

7

8

K-W

eig

ht

(min

ifie

d,

no

n-g

zip

)

IO Component

io-xdr

io-upload

io-queue

io-form

io-base

connection

Page 11: YDN KR Tech Talk : YUI 3.0

Extension and Plugin Architecture

Overlay

Tooltip

myOverlay

Positioning

Adv. Positioning

Shimming/Stacking

Header/Body/Footer

Animation

IO Binding

Widget

Page 12: YDN KR Tech Talk : YUI 3.0

The Node Wrapper

Page 13: YDN KR Tech Talk : YUI 3.0

Working with DOM Elements in YUI 3

var node = Y.get(".actions li.task.selected");

node.addClass("current");

node.on("click", handler);

Y.get(…).addClass("current").on("click", handler);

Page 14: YDN KR Tech Talk : YUI 3.0

Supports

node.appendChild(aNode)

node.cloneNode(boolean)

node.scrollIntoView()

node.focus()

node.get("parentNode")

node.set("innerHTML","Foo")

Page 15: YDN KR Tech Talk : YUI 3.0

Normalizes

node.getAttribute("href")

node.contains(aNode)

node.getStyle("paddingTop")

node.previous()

Page 16: YDN KR Tech Talk : YUI 3.0

Enhances

node.addClass("selectable")

node.toggleClass("enabled")

node.getXY()

node.get("region")

node.on("srcChange", fn)

node.after("innerHTMLChange", fn)

Page 17: YDN KR Tech Talk : YUI 3.0

Extendable

node.plug(IOPlugin);

node.io.getContent("http://foo/bar");

node.plug(DragDropPlugin);

node.dd.set("handle", ".title");

Page 18: YDN KR Tech Talk : YUI 3.0

Constrainable

Node is the single point of access to the DOM.

Makes YUI 3 ideal as a trusted source for"constrained" environments like Caja andAd-safe.

Page 19: YDN KR Tech Talk : YUI 3.0

NodeList

* The Costco to Node’s Kwik-E Mart

var items = Y.all(".actions li");items.addClass("disabled");items.set("title", "Item Disabled");

items.each(function(node) { node.addClass("disabled); node.set("title", "Item Disabled");});

Page 20: YDN KR Tech Talk : YUI 3.0

YUI 3 Node API

SupportsNormalizesEnhancesExtendableConstrainable

Page 21: YDN KR Tech Talk : YUI 3.0

The Event System

Page 22: YDN KR Tech Talk : YUI 3.0

Event Listeners & Event Facades

// Dom EventmyElement.on("click", function(e) { if (!e.target.hasClass("disabled")) { e.preventDefault(); }});

// Custom EventmyWidget.on("select", function(e) { if (e.newVal < 200) { e.preventDefault(); }});

Page 23: YDN KR Tech Talk : YUI 3.0

Detaching Listeners

// YUI 3var handle = overlay.on("show", myShowHandler);handle.detach();

// Oroverlay.on("myapp|show", myShowHandler);overlay.on("myapp|hide", myHideHandler);

overlay.detach("myapp|show");

overlay.detach("myapp|*");

Page 24: YDN KR Tech Talk : YUI 3.0

Custom Event Flow: On/Default/After

On

On

Default Behavior

After

After

After

this.fire("select");

e.stopImmediatePropagation();

e.preventDefault();

e.stopImmediatePropagation();

Page 25: YDN KR Tech Talk : YUI 3.0

DOM Event Delegation

Y.on("delegate", function(e) { e.target.addClass("selected")}, "ul", "click", "li");

Page 26: YDN KR Tech Talk : YUI 3.0

MenuMenuItem

Custom Event Delegation

On

On

Def. Behavior

After

After

After

this.fire("menuitem:select")

On

Def. Behavior

After

After

e.stopPropagation()

Page 27: YDN KR Tech Talk : YUI 3.0

YUI 3 Event Model

Event Listening

Event Facades

Detaching

Built-in "on" and "after" moments

Prevent default behavior

Event bubbling

Page 28: YDN KR Tech Talk : YUI 3.0

YUI Library Overview

Documentation

Community

Page 29: YDN KR Tech Talk : YUI 3.0

Thanks!

Read http://developer.yahoo.com/yui/3

Discuss http://yuilibrary.com/forum/viewforum.php?f=15

Or just jump in headfirst…

http://github.com/yui/yui3/tree/master