Why You Shouldn't Write OO

54
{ Evented...

Transcript of Why You Shouldn't Write OO

Page 1: Why You Shouldn't Write OO

{ Evented...

Page 2: Why You Shouldn't Write OO

Why You Shouldn’t Write

OO jQuery

Page 3: Why You Shouldn't Write OO

Why You Shouldn’t Write

OO jQueryTroll

Page 4: Why You Shouldn't Write OO

Organization

Page 5: Why You Shouldn't Write OO

Organization

X

Page 6: Why You Shouldn't Write OO

Code Reuse

Page 7: Why You Shouldn't Write OO

We’re Used to It

Page 8: Why You Shouldn't Write OO

Strategy

Page 9: Why You Shouldn't Write OO

Widget

Page 10: Why You Shouldn't Write OO

Widget

Page 11: Why You Shouldn't Write OO

Widget

Page 12: Why You Shouldn't Write OO

Widgetfunction function function

Page 13: Why You Shouldn't Write OO

Widget

AjaxWidget

Page 14: Why You Shouldn't Write OO

Widget

AjaxWidget

HistoryAjaxWidget

Page 15: Why You Shouldn't Write OO

Widget

AjaxWidget

HistoryAjaxWidget

super

Page 16: Why You Shouldn't Write OO

Widget

AjaxWidget

HistoryAjaxWidget

super

super

Page 17: Why You Shouldn't Write OO
Page 18: Why You Shouldn't Write OO

Widget

AjaxWidget

Page 19: Why You Shouldn't Write OO

Widget

AjaxWidget HistoryWidget

Widget

Page 20: Why You Shouldn't Write OO

Composability

Page 21: Why You Shouldn't Write OO

ComposabilityX

Page 22: Why You Shouldn't Write OO

OO Code in JS is Crippled

Evented Code

Page 23: Why You Shouldn't Write OO

Instead of calling a method

Page 24: Why You Shouldn't Write OO

{widget.activate();

Page 25: Why You Shouldn't Write OO

Widget

User Code

Page 26: Why You Shouldn't Write OO

Widget

User Code

1:1

Page 27: Why You Shouldn't Write OO

Widget

User Code

1:1 Sync

Page 28: Why You Shouldn't Write OO

Trigger an Event

Page 29: Why You Shouldn't Write OO

}element.trigger("activate")

Page 30: Why You Shouldn't Write OO

Listener

User Code

Listener Listener

Page 31: Why You Shouldn't Write OO

Advantages

Page 32: Why You Shouldn't Write OO

Familiar Model

Page 33: Why You Shouldn't Write OO

{$("div").click(function() { // do stuff})

Page 34: Why You Shouldn't Write OO

Evented Code Fits More

Cleanly with Requirements

Page 35: Why You Shouldn't Write OO

“When the user picks an item

from the autocompleter”

Page 36: Why You Shouldn't Write OO

Real Example

Page 37: Why You Shouldn't Write OO

Caveat: Simple Technique

Page 38: Why You Shouldn't Write OO

I’ve Used This Technique on Large Projects

Page 39: Why You Shouldn't Write OO

Tabs

Page 40: Why You Shouldn't Write OO
Page 41: Why You Shouldn't Write OO

div.ui-tabs

Page 42: Why You Shouldn't Write OO

div.ui-tabs

keypressclick

Page 43: Why You Shouldn't Write OO

div.ui-tabs

keypressclick

tabactivate

Page 44: Why You Shouldn't Write OO

div.ui-tabs

keypressclick

tabactivate

Page 45: Why You Shouldn't Write OO

div.ui-tabs

keypressclick

tabactivate

Page 46: Why You Shouldn't Write OO

tabactivate

default

a) open paneb) mark tab selected

analogy: typing in text box triggers a change event

Page 47: Why You Shouldn't Write OO

tabactivate

default

a) open paneb) mark tab selected

return false

Page 48: Why You Shouldn't Write OO

Tech in the Example

Page 49: Why You Shouldn't Write OO

Arista Theme

Page 50: Why You Shouldn't Write OO

Sass and Compass

Page 51: Why You Shouldn't Write OO

(try to avoid using JS to set

up layouts)

Page 52: Why You Shouldn't Write OO

Staticmatic

Page 53: Why You Shouldn't Write OO

jQuery BBQ(Ben Alman)

Page 54: Why You Shouldn't Write OO

Demo