introduction to yui3 - palouse code camp 2010

28
Introduction to YUI 3 Jeff Craig May 13, 2010 Jeff Craig () Introduction to YUI 3 May 13, 2010 1 / 21

Upload: jeff-craig

Post on 08-Feb-2017

1.000 views

Category:

Technology


3 download

TRANSCRIPT

Page 1: Introduction to YUI3 - Palouse Code Camp 2010

Introduction to YUI 3

Jeff Craig

May 13, 2010

Jeff Craig () Introduction to YUI 3 May 13, 2010 1 / 21

Page 2: Introduction to YUI3 - Palouse Code Camp 2010

About Me

Who am I?

Software Developer at Washington State University

Contact:

[email protected]

http://blog.foxxtrot.net/

twitter.com/foxxtrot

github.com/foxxtrot

Jeff Craig () Introduction to YUI 3 May 13, 2010 2 / 21

Page 3: Introduction to YUI3 - Palouse Code Camp 2010

YUI What

What is YUI?

Housed and Developed at Yahoo!

YUI2 Released in 2006, still actively supported

YUI3 launched late 2009

Used across most Yahoo! properties, new development is in YUI3

Designed to be scalable, fast, secure, and modular

Jeff Craig () Introduction to YUI 3 May 13, 2010 3 / 21

Page 4: Introduction to YUI3 - Palouse Code Camp 2010

YUI What

YUI3 Structure

Core

Component Infrastructure

Utilities

Widgets

Developer Tools

Jeff Craig () Introduction to YUI 3 May 13, 2010 4 / 21

Page 5: Introduction to YUI3 - Palouse Code Camp 2010

YUI What

YUI3 Structure

Core

Lang, UA, Queue, Object, Get, Array, Node, Event

Component Infrastructure

Utilities

Widgets

Developer Tools

Jeff Craig () Introduction to YUI 3 May 13, 2010 4 / 21

Page 6: Introduction to YUI3 - Palouse Code Camp 2010

YUI What

YUI3 Structure

Core

Component Infrastructure

Base, Attribute, Plugin, Widget

Utilities

Widgets

Developer Tools

Jeff Craig () Introduction to YUI 3 May 13, 2010 4 / 21

Page 7: Introduction to YUI3 - Palouse Code Camp 2010

YUI What

YUI3 Structure

Core

Component Infrastructure

Utilities

Animation, Cache, Cookie, DataSchema, IO, JSON, ImageLoader,Internationalization, etc.

Widgets

Developer Tools

Jeff Craig () Introduction to YUI 3 May 13, 2010 4 / 21

Page 8: Introduction to YUI3 - Palouse Code Camp 2010

YUI What

YUI3 Structure

Core

Component Infrastructure

Utilities

Widgets

Overlay, Slider, TabView, GridView

Developer Tools

Jeff Craig () Introduction to YUI 3 May 13, 2010 4 / 21

Page 9: Introduction to YUI3 - Palouse Code Camp 2010

YUI What

YUI3 Structure

Core

Component Infrastructure

Utilities

Widgets

Developer Tools

Console, Profiler, Test

Jeff Craig () Introduction to YUI 3 May 13, 2010 4 / 21

Page 10: Introduction to YUI3 - Palouse Code Camp 2010

YUI Why?

Why YUI3?

Modular: Load only the code you need.

Flexible: Base functionality provides flexible Attribute and Pluginsystems

Complete: Tons of utilities available now, and widgets are coming

Fast: Demonstrable faster at common tasks, and fast enough for oneof the worlds largest websites.

Jeff Craig () Introduction to YUI 3 May 13, 2010 5 / 21

Page 11: Introduction to YUI3 - Palouse Code Camp 2010

YUI Why Not?

Why not YUI3?

Your existing codebase works

Many widgets haven’t been ported yet.

Some will not be.

Jeff Craig () Introduction to YUI 3 May 13, 2010 6 / 21

Page 12: Introduction to YUI3 - Palouse Code Camp 2010

YUI Why Not?

Why not YUI3?

Your existing codebase works

Many widgets haven’t been ported yet.

Some will not be.

Jeff Craig () Introduction to YUI 3 May 13, 2010 6 / 21

Page 13: Introduction to YUI3 - Palouse Code Camp 2010

YUI SimpleYUI

SimpleYUI

Introduced with YUI 3.2

Eliminates the Sandbox

Fastest way to get started with YUI3

Provides Node/Events, Transitions, IO

Jeff Craig () Introduction to YUI 3 May 13, 2010 7 / 21

Page 14: Introduction to YUI3 - Palouse Code Camp 2010

YUI SimpleYUI

Why not use SimpleYUI?

There are performance benefits to using the module pattern

There is safety in the sandbox

You have more control in standard YUI

Jeff Craig () Introduction to YUI 3 May 13, 2010 8 / 21

Page 15: Introduction to YUI3 - Palouse Code Camp 2010

YUI Community

YUI3 and the Community

With YUI3, the team refocused on open-source. They launched YUI3 witha public bug tracker and forums, and put the source up on GitHub.

In October 2009, the Gallery launched, providing a mechanism for modulesto be shared easily outside of the core of YUI, including offering hosting onthe Yahoo! CDN for modules, and easy inclusion within YUI3 projects.

In early 2010, the YUI Team began hosting ”YUI Open Hours” a periodicconference call.

Jeff Craig () Introduction to YUI 3 May 13, 2010 9 / 21

Page 16: Introduction to YUI3 - Palouse Code Camp 2010

YUI Resources

YUI Resources

http://yuilibrary.com/

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

http://github.com/yui/

http://yuiblog.com/

http://twitter.com/miraglia/yui/members

Jeff Craig () Introduction to YUI 3 May 13, 2010 10 / 21

Page 17: Introduction to YUI3 - Palouse Code Camp 2010

YUI Standard Utilities

Node

Y.one(’#nav’);

Y.all(’#nav li’);

Y.one returns a ’Node’

Y.all returns a ’NodeList’

Jeff Craig () Introduction to YUI 3 May 13, 2010 11 / 21

Page 18: Introduction to YUI3 - Palouse Code Camp 2010

YUI Standard Utilities

Node Methods

var input = Y.one(’input[type=text]’);

input.addClass(’hide’); // Add the ’hide’ class to the node

input.removeClass(’hide’);

input.toggleClass(’hide’);

input.get(’value’);

input.getStyle(’display’);

input.test(’.hide’); // Tests if the node matches a selctor

Jeff Craig () Introduction to YUI 3 May 13, 2010 12 / 21

Page 19: Introduction to YUI3 - Palouse Code Camp 2010

YUI Standard Utilities

NodeList Methods

var items = Y.one(’li’);

items.filter(’.hidden’);

items.even().addClass(’even’);

items.odd().addClass(’odd’);

items.item(4); // NOT an array-like object

items.size();

items.each(function(item, index, list) {

// Treat this kind of like a for loop.

});

Jeff Craig () Introduction to YUI 3 May 13, 2010 13 / 21

Page 20: Introduction to YUI3 - Palouse Code Camp 2010

YUI Standard Utilities

Events

Y.on(’click’, handler, ’#actionButton’);

handler = function(e) {

// e is a DOM Event Facade

// Same betwen all browsers

e.halt(); // Stop propogation and default action

e.preventDefault();

e.stopPropogation();

}

Same syntax as custom events

Support for touch events

Jeff Craig () Introduction to YUI 3 May 13, 2010 14 / 21

Page 21: Introduction to YUI3 - Palouse Code Camp 2010

YUI Standard Utilities

Event Delegation

Y.delegate(’click’, handler, ’#container’, selector);

Assign one event, on the container, but only call the handler onchildren that match the selector.

Doesn’t fix non-bubbling events, like change-events in InternetExplorer

Jeff Craig () Introduction to YUI 3 May 13, 2010 15 / 21

Page 22: Introduction to YUI3 - Palouse Code Camp 2010

YUI Standard Utilities

Event Delegation

Y.delegate(’click’, handler, ’#container’, selector);

Assign one event, on the container, but only call the handler onchildren that match the selector.

Doesn’t fix non-bubbling events, like change-events in InternetExplorer

Jeff Craig () Introduction to YUI 3 May 13, 2010 15 / 21

Page 23: Introduction to YUI3 - Palouse Code Camp 2010

YUI Standard Utilities

YUI3 Templating

TEMPLATE = "<li><a href=’{link}’>{label}</a></li>";

data = {

link: "http://blog.foxxtrot.net/",

label: "My Blog"

};

Y.Lang.sub(TEMPLATE, data);

Jeff Craig () Introduction to YUI 3 May 13, 2010 16 / 21

Page 24: Introduction to YUI3 - Palouse Code Camp 2010

YUI Standard Utilities

Advanced YUI3 Templating

TEMPLATE = "<li class=’{selected}’><a href=’{link}’>{label}</a></li>";

data = {

link: "http://blog.foxxtrot.net/",

label: "My Blog",

selected: true

};

Y.use(’substitutue’, function(Y) {

Y.substitute(TEMPLATE, data,

function(key, value) {

if(key === "selected") {

return value ? "selected" : "";

}

return value;

});

});

Jeff Craig () Introduction to YUI 3 May 13, 2010 17 / 21

Page 25: Introduction to YUI3 - Palouse Code Camp 2010

YUI AJAX

Server Calls

Y.io("/path/to/request", {

method: ’GET’,

data: ’field1=value&field2=3’,

on: {

start: handler,

complete: handler,

success: handler,

failure: handler,

end: handler

}

sync: false,

timeout: 2000

});

Jeff Craig () Introduction to YUI 3 May 13, 2010 18 / 21

Page 26: Introduction to YUI3 - Palouse Code Camp 2010

YUI AJAX

JSON

Y.JSON.stringify({

name: "Jeff Craig",

nick: "foxxtrot",

session: "Intro to YUI3"

});

Y.JSON.parse("{’event’: ’Palouse Code Camp’,

’date’: ’2010.10.30’}");

Jeff Craig () Introduction to YUI 3 May 13, 2010 19 / 21

Page 27: Introduction to YUI3 - Palouse Code Camp 2010

YUI AJAX

Transistions

Y.one(’#demo’).transition({

duration: 1, // seconds

easing: ’ease-out’,

height: 0,

width: 0,

left: ’150px’,

top: ’100px’,

opacity: 0

}, function() { Y.one(’#demo’).destroy(true); } );

Jeff Craig () Introduction to YUI 3 May 13, 2010 20 / 21

Page 28: Introduction to YUI3 - Palouse Code Camp 2010

YUI End Notes

Links

YUI:

http://yuilibrary.com/

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

http://github.com/yui/

http://yuiblog.com/

http://twitter.com/miraglia/yui/members

Me:

[email protected]

http://blog.foxxtrot.net/

twitter.com/foxxtrot

github.com/foxxtrot

Jeff Craig () Introduction to YUI 3 May 13, 2010 21 / 21