Slide 1

Slide 1 text

javascript event emitter aka decoupling javascript modules

Slide 2

Slide 2 text

why? aka was machen sachen Sometimes modules are dependent on other modules but we still want to be able to keep them loosely coupled. *loosely coupled

Slide 3

Slide 3 text

wait ... “If you've ever listened for a click event in a browser you've used an emitter.” - yes. but no. but yes. => decouples dom from js => You'll see this type of pattern a lot in node.js.

Slide 4

Slide 4 text

Page (has xhr model; aka makes requests and holds list data) List (gets data from page, shows list) Pagination (gets data from page, has dom event handler, updates page request on click) Sorting (gets data from page, has dom event handler, updates page request on click) a job list x-ample

Slide 5

Slide 5 text

current implementaion - page makes model - filter constructor: request - searchform constructor: request & filter - listing constructor: request - so much broken code …. later =======>

Slide 6

Slide 6 text

Page (loads xhr data, renders list with data) List (gets data from page, shows list) Pagination (gets data list) Sorting (gets data from list) a job list x-ample - data down

Slide 7

Slide 7 text

Page (gets event from list - makes xhr - then data down again) List (listens to events from childen - sends event on request change) Pagination (gets dom event - sends event to list) Sorting (gets dom event - sends event to list) a job list x-ample - events up

Slide 8

Slide 8 text

code ... https://github.com/HenrikJoreteg/wildemitter

Slide 9

Slide 9 text

wins - more re-usable - less brainfuck - more clean code