■ Forked off Sproutcore in 2011 by Yehuda Katz, Tom Dale and others ■ Now a 9-person core team including NYCers Stefan Penner & Alex Matchneer ■ Reached 1.0 release status on August 31, 2013 ■ Currently at 1.3.1 !5 Quick History
■ Robust object model (mixins, class-based inheritance) ■ Key-value observer system to support declarative data-binding ■ Dependency injection container ■ More: run loop, events, promises, data-bound templates using Handlebars… !6 Core building blocks
View View Template !9 Overall app data flow Router Controller Controller Model Model Model Model Data flows down from models via bindings Events flow up from view layer to the router Router updates models & controllers based on events
!12 Router Controller Controller View View Template Model Model Model Model Models: Should not depend on controllers, views or other app state Template
■ Data library under development by the Ember core team and community (an “ORM” for the browser?) ■ Store + Adapter + Serializer ■ DS.Store implements an Identity Map ■ Currently 1.0 beta; API is much less stable than Ember core !15 Models the robust way: Ember Data
Controllers: Ember.ObjectController ■ Transparently proxies missing properties and methods to the object set as its content property ■ Destroyer of boilerplate !21
Router: Responsibilities ■Manages application state ■Fills outlets with template/view/ controller triads ■Keeps the URL up-to-date as you transition between routes !35
!40 Overall app data flow, reprise Router Controller Controller View View Template Model Model Model Model Data flows down from models via bindings Events flow up from view layer to the router Router updates models & controllers based on events
When should you use Ember? ■ You’re making a non-trivial app ■ You want your app to grow and remain maintainable ■ Scale to team-based development ■ You want to enjoy the journey! !45
Q & A ! ! ! ! Follow me @lukemelia Some examples appear courtesy of my company. Yapp Labs offers Ember.js consulting and training. Creative Commons photo credits: flickr.com/photos/fictures/4596895 !47