yui 3 - openhacklondon.pbworks.comopenhacklondon.pbworks.com/f/...%c2%a0yui3.pdf · the class from...

28
YUI 3 http://developer.yahoo.com/yui3 http://github.com/yui/yui3 http://github.com/davglass/openhackday http://blog.davglass.com @davglass

Upload: truongkiet

Post on 10-Feb-2018

223 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: YUI 3 - openhacklondon.pbworks.comopenhacklondon.pbworks.com/f/...%C2%A0YUI3.pdf · The Class From Which YUI 3 Classes Will Be Derived

YUI 3http://developer.yahoo.com/yui3

http://github.com/yui/yui3

http://github.com/davglass/openhackdayhttp://blog.davglass.com

@davglass

Page 2: YUI 3 - openhacklondon.pbworks.comopenhacklondon.pbworks.com/f/...%C2%A0YUI3.pdf · The Class From Which YUI 3 Classes Will Be Derived

2

YUI.use('lighter', function(Y) { Y.all('.faster li').each(function(v) { v.set('innerHTML', 'easier'); });});

Page 3: YUI 3 - openhacklondon.pbworks.comopenhacklondon.pbworks.com/f/...%C2%A0YUI3.pdf · The Class From Which YUI 3 Classes Will Be Derived

3

Lighter Don't load what you don't need Don't write code more than once, use it again

Easier Consistent API

Base, Selector, Widget, IO/Get/DataSource Convenience

each, bind, nodelist, queue, chainability, general sugar

Faster Opportunity to re-factor core performance pain points

Page 4: YUI 3 - openhacklondon.pbworks.comopenhacklondon.pbworks.com/f/...%C2%A0YUI3.pdf · The Class From Which YUI 3 Classes Will Be Derived

4

Why the change?

• Selectors• Chaining• Consistancy• Sandboxing• Better Dependency Handling• Versioning

What our users asked for:

Page 5: YUI 3 - openhacklondon.pbworks.comopenhacklondon.pbworks.com/f/...%C2%A0YUI3.pdf · The Class From Which YUI 3 Classes Will Be Derived

5

Protected Code

<script src="/3.4/build/yui/yui-min.js"><script>

YUI().use("overlay", function(Y) { Y.on("click", function(){ new Y.Overlay({...}).render();

}, "#button");});

</script>

Page 6: YUI 3 - openhacklondon.pbworks.comopenhacklondon.pbworks.com/f/...%C2%A0YUI3.pdf · The Class From Which YUI 3 Classes Will Be Derived

6

Protected Code

<script src="/3.2/build/overlay/overlay-min.js"><script>

YUI().use("overlay", function(Y) { Y.on("click", function(){ new Y.Overlay({...}).render();

}, "#button2");});

</script>

Page 7: YUI 3 - openhacklondon.pbworks.comopenhacklondon.pbworks.com/f/...%C2%A0YUI3.pdf · The Class From Which YUI 3 Classes Will Be Derived

7

Self Populating

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

<script>

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

});

</script>

Page 8: YUI 3 - openhacklondon.pbworks.comopenhacklondon.pbworks.com/f/...%C2%A0YUI3.pdf · The Class From Which YUI 3 Classes Will Be Derived

8

Self Populating

<script src="yui-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">

<script>

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

});

</script>

Page 9: YUI 3 - openhacklondon.pbworks.comopenhacklondon.pbworks.com/f/...%C2%A0YUI3.pdf · The Class From Which YUI 3 Classes Will Be Derived

9

Self Populating

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

<script>

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

});

</script>

Page 10: YUI 3 - openhacklondon.pbworks.comopenhacklondon.pbworks.com/f/...%C2%A0YUI3.pdf · The Class From Which YUI 3 Classes Will Be Derived

10

Event

Event Facades Built-in on and after moments Default Behavior (preventDefault) Event Bubbling (stopPropagation) Detach Handles

The Enhanced Custom Event System Is AnIntegral Part of YUI 3’s Goal To Be Lighter, Allowing For Highly Decoupled Code

Page 11: YUI 3 - openhacklondon.pbworks.comopenhacklondon.pbworks.com/f/...%C2%A0YUI3.pdf · The Class From Which YUI 3 Classes Will Be Derived

11

Event// Dom EventYAHOO.util.Event.on("click", function(e) { YAHOO.util.Event.preventDefault(e);});

// Dom EventYAHOO.util.Event.on("mousemove", function(e) { YAHOO.util.Event.getPageX(e);});

// Custom Eventslider.on("valueChange", function(e) { if (someVal < 200) { return false; }});

Page 12: YUI 3 - openhacklondon.pbworks.comopenhacklondon.pbworks.com/f/...%C2%A0YUI3.pdf · The Class From Which YUI 3 Classes Will Be Derived

12

// Dom EventlinkNode.on("click", function(e) {if (!e.target.hasClass("selector")) {e.preventDefault();

}var x = e.pageX;

});

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

Event Facade

Page 13: YUI 3 - openhacklondon.pbworks.comopenhacklondon.pbworks.com/f/...%C2%A0YUI3.pdf · The Class From Which YUI 3 Classes Will Be Derived

13

Event Bubblingvar dd = new Y.DD.Drag({ node: '#drag' });

//Listen at a higher levelY.DD.DDM.on('drag:drag', function(e) {if (tooFar) {e.preventDefault();

}});

//Set opacity on all drag objects Y.DD.DDM.on('drag:start', function(e) {var dds = Y.all('.yui-dd-draggable').setStyle('opacity', '.5');

});

Page 14: YUI 3 - openhacklondon.pbworks.comopenhacklondon.pbworks.com/f/...%C2%A0YUI3.pdf · The Class From Which YUI 3 Classes Will Be Derived

14

Event

// Publishershow : function() { this.fire("show");},

_defShowFn : function(e) { node.removeClass("hidden"); ...}

// Subscriberoverlay.on("show", function(e) { if (!taskSelected) { e.preventDefault(); }}

overlay.after("show", function(e) {...});

Page 15: YUI 3 - openhacklondon.pbworks.comopenhacklondon.pbworks.com/f/...%C2%A0YUI3.pdf · The Class From Which YUI 3 Classes Will Be Derived

15

Node

Selector BasedSupportsNormalizesEnhances

ExtendableConstrainable

A single convenient location for working with HTML Elements

Page 16: YUI 3 - openhacklondon.pbworks.comopenhacklondon.pbworks.com/f/...%C2%A0YUI3.pdf · The Class From Which YUI 3 Classes Will Be Derived

16

Node

Working with Node:Y.get('#foo').addClass('selected').

set('innerHTML', 'Here');

var foo = Y.get('#foo');

foo.on('click', function() { ... });

foo.addClass('selected');

foo.getXY();

foo.setStyle('backgroundColor', 'red');

Page 17: YUI 3 - openhacklondon.pbworks.comopenhacklondon.pbworks.com/f/...%C2%A0YUI3.pdf · The Class From Which YUI 3 Classes Will Be Derived

17

Node

Supports the HTMLElement APInode.appendChild(aNode)node.cloneNode(aNode)node.scrollIntoView()node.get("parentNode")node.set("innerHTML","Foo")

Page 18: YUI 3 - openhacklondon.pbworks.comopenhacklondon.pbworks.com/f/...%C2%A0YUI3.pdf · The Class From Which YUI 3 Classes Will Be Derived

18

Node

Normalizes the HTMLElement APInode.getAttribute("href")node.contains(aNode)node.getText()node.getStyle("paddingTop")node.previous()

Page 19: YUI 3 - openhacklondon.pbworks.comopenhacklondon.pbworks.com/f/...%C2%A0YUI3.pdf · The Class From Which YUI 3 Classes Will Be Derived

19

Node

Enhances The HTMLElement APInode.addClass("selectable")node.toggleClass("enabled")node.getXY()node.get("region")

Page 20: YUI 3 - openhacklondon.pbworks.comopenhacklondon.pbworks.com/f/...%C2%A0YUI3.pdf · The Class From Which YUI 3 Classes Will Be Derived

20

Node

ExtendablePlugins can provide app specific features…

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

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

Page 21: YUI 3 - openhacklondon.pbworks.comopenhacklondon.pbworks.com/f/...%C2%A0YUI3.pdf · The Class From Which YUI 3 Classes Will Be Derived

21

Node

Constrainable

Makes YUI 3 ideal as a trusted source in "constrained" environments such as Caja and Ad-Safe

Node is the single point for DOM access,throughout YUI 3

Page 22: YUI 3 - openhacklondon.pbworks.comopenhacklondon.pbworks.com/f/...%C2%A0YUI3.pdf · The Class From Which YUI 3 Classes Will Be Derived

22

NodeList

Used to Batch Node operationsvar items = Y.Node.all(".actions li");items.addClass("disabled");items.set("title", "Item Disabled");

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

Page 23: YUI 3 - openhacklondon.pbworks.comopenhacklondon.pbworks.com/f/...%C2%A0YUI3.pdf · The Class From Which YUI 3 Classes Will Be Derived

23

Core Language Addons

Array Extras isString, isNumber … Bind Each Later OOP

Augment, Extend, Aggregate, Merge, Clone AOP

Before/After For Methods

Page 24: YUI 3 - openhacklondon.pbworks.comopenhacklondon.pbworks.com/f/...%C2%A0YUI3.pdf · The Class From Which YUI 3 Classes Will Be Derived

24

A Common Foundation

Y.Attribute Configurable Attributes

readOnly, writeOnce validators, getters and setters

Attribute Value Change Events on/after

Complex Attribute Support set("strings.label_enabled", "Enabled");

Page 25: YUI 3 - openhacklondon.pbworks.comopenhacklondon.pbworks.com/f/...%C2%A0YUI3.pdf · The Class From Which YUI 3 Classes Will Be Derived

25

A Common Foundation

Y.Base The Class From Which YUI 3 Classes Will Be Derived Combines Custom Event And Attribute Support Manages the "init" and "destroy" Lifecycle Moments Provides Plugin/Extension Management

Page 26: YUI 3 - openhacklondon.pbworks.comopenhacklondon.pbworks.com/f/...%C2%A0YUI3.pdf · The Class From Which YUI 3 Classes Will Be Derived

26

A Common Foundation

Y.Widget The Base Implementation For All Widgets Introduces Common Attributes, Methods

boundingBox, contentBox width, height visible, disabled, hasFocus strings show(), hide(), focus(), blur(), enable(), disable()

Manages The "render" Lifecycle Moment Establishes A Common Pattern For Widget Development

Page 27: YUI 3 - openhacklondon.pbworks.comopenhacklondon.pbworks.com/f/...%C2%A0YUI3.pdf · The Class From Which YUI 3 Classes Will Be Derived

27

Code...

Finally, let's see some code..

Page 28: YUI 3 - openhacklondon.pbworks.comopenhacklondon.pbworks.com/f/...%C2%A0YUI3.pdf · The Class From Which YUI 3 Classes Will Be Derived

YUI 3http://developer.yahoo.com/yui3

http://github.com/yui/yui3

http://github.com/davglass/openhackdayhttp://blog.davglass.com

@davglass