SlideShare a Scribd company logo
SPAs Redux:
Snappy, Performant Apps (with Ember.js)



Anthony Bull
Sr. Web Engineer, CrowdFlower
SFHTML5 Meetup, January 31, 2013




                                          1
Latest




Ember.js 1.0.0-pre.4




                       2
Ember.js MVC != server-side MVC




                                  3
tl;dr



 Ember.js provides the best balance of trade-offs
  of any (JS) MVC framework when it comes to
building clean, well-factored client-side web apps.




                                                      4
History of JS MVCs/SPAs/F2E*



                              YUI
                Prototype/    Prototype/
              script.aculo.us   jQuery


 JavaScript
   01




                                                                     y
                         10
                 06




                                    11




                                                           12
                                                 12




                                                                 da
 20




                          0
               20




                                  0




                                                       20




                                                                To
                                            20
                       -2

                               -2
                    07

                              10




                                                      id
                                           rly

                                                  m
                  20

                         20



                                         ea




* a somewhat-biased account

                                                                         5
Framework Comparisons


                                           convention over       HTML for apps,
Approach                   DIYer
                                            configuration           not pages

                                           less code = more
Top Pro                   flexibility                            corporate-backing
                                               productive


Top Con              re-create the wheel   ramp up != trivial       verbosity


If I took you on a
                     knife/spoon/fork      swiss-army knife          spork
camping trip...




                                                                                    6
Hello World!




               7
A Template



<script type="text/x-handlebars" data-template-name="application">
      Hello, <strong>{{userName}}</strong>!
</script>




                                                                 8
A View



var view = Ember.View.create({
  templateName: 'application'
});




                                 9
A Controller



App.ApplicationController = Ember.Controller.extend();




                                                         10
A Route


App.ApplicationRoute = Ember.Route.extend({
   setupController: function(controller,user) {
      controller.set(‘content’, App.user);
   }
})




                                              11
An Object



App.user = Ember.Object.create({
  name: 'World!'
});




                                   12
An App
App = Ember.Application.create();

App.user = Ember.Object.create({
  name: 'World!'
});

var view = Ember.View.extend({
  templateName: 'application'
});

App.ApplicationRoute = Ember.Route.extend({
  setupController: function(controller, user){
    controller.set('content', App.user);
  }
});




                                                 13
sonific8tr
http://github.com/inkredabull/sonific8tr




                                          14
Naming (Very Important!!!)*

                   Template      stations
                        View     App.StationsController
                   Controller    App.StationView
                     Router      this.resource('stations')
                                 App.StationsRoute
                         Model   App.Station


* convention over configuration

                                                             15
Testing

•   You should do it
•   QUnit
•   Selenium (Lebowski gem?)
•   Capybara
    • PhantomJS/poltergeist




                               16
Ember.js Resources

• Learn more                       • Ember.js Project
  • Marakana : Pro Ember.js          • Homepage
  • Peepcode : Ember.js              • GitHub
  • This week in Ember.js ...      • Documentation
  • Tom on Ember Data, Oct. 2012      • http://emberjs.com/guides/
  • Peter on Views, Sep. 2012      • Community
  • Yehuda on Ember, Sep. 2012       • Ember.js on StackOverflow
  • Which MVC framework?             • IRC : freenode.net #emberjs




                                                                     17
tl;dr - II


• Pedigree (SproutCore, jQuery, Merb, Rails)
• Community (tremendous growth in last year)
• Stability (state mgt./data sync/conventions/docs)




                                                      18
Jobs!!!



          My job!




                    19
• We’re hiring! (Ember.js/Rails)
• Ski trip!




                                   20
Thanks!

     Kariem Hussein, Exabit
        Alexander Sorokin
            Mars Hall
    CVP & Engr at CrowdFlower
         Tatiana Josephy

  Tom Dale @tomdale            Jakub Arnold @darthdeus
 Yehuda Katz @wycats             Trek Glowacki @trek
Peter Wagenet @wagenet        Clemens Müller @pangratz
      Tilde @tildeio       Andy Matthews @commadelimited



                 Contact me at:
            anthony@crowdflower.com
                    @inkredabull




                                                           21
More...




          22
History of Ember.js
               Apple
       (MobileMe & iCloud.com)
                                                                  Amber.js / Ember.js
 SproutCore                                                                             1.0.0-pre.4
                                                             Sproutcore 2
                                                                                   0.9.6
                                                                                    0.9.8
                                                                                                 RC 1.0
                                                                                     1.0.0-pre.1

                                                                                        1.0.0-pre.2

                                                                                           1.0.0-pre.3
                  08
    07




                                                                  11


                                                                           11




                                                                                                              g
                                                                                                   y

                                                                                                          in
                                                                                             da
               20
  20




                                                             20


                                                                       20




                                                                                                          m
                                                                                        To

                                                                                                         Co
                                                           ay


                                                                       c
                                                                   De
                                                         M




*
http://www.cerebris.com/blog/2012/01/20/warming-up-to-ember-js/
http://en.wikipedia.org/wiki/SproutCore

                                                                                                                  23
Who’s using Ember.js?




                        24
Who’s behind Ember.js?




Tom Dale                   Yehuda Katz




                                         25

More Related Content

Similar to Ember.js for SFHTML5

Crossing the Bridge: Connecting Rails and your Front-end Framework
Crossing the Bridge: Connecting Rails and your Front-end FrameworkCrossing the Bridge: Connecting Rails and your Front-end Framework
Crossing the Bridge: Connecting Rails and your Front-end Framework
Daniel Spector
 
Testing Big in JavaScript
Testing Big in JavaScriptTesting Big in JavaScript
Testing Big in JavaScript
Robert DeLuca
 
Reactive application using meteor
Reactive application using meteorReactive application using meteor
Reactive application using meteor
Sapna Upreti
 
Building Isomorphic Apps (JSConf.Asia 2014)
Building Isomorphic Apps (JSConf.Asia 2014)Building Isomorphic Apps (JSConf.Asia 2014)
Building Isomorphic Apps (JSConf.Asia 2014)
Spike Brehm
 
From Idea to App (or “How we roll at Small Town Heroes”)
From Idea to App (or “How we roll at Small Town Heroes”)From Idea to App (or “How we roll at Small Town Heroes”)
From Idea to App (or “How we roll at Small Town Heroes”)
Bramus Van Damme
 
Building single page applications
Building single page applicationsBuilding single page applications
Building single page applications
SC5.io
 
Tom Germeau: Mobile Apps: Finding the balance between performance and flexibi...
Tom Germeau: Mobile Apps: Finding the balance between performance and flexibi...Tom Germeau: Mobile Apps: Finding the balance between performance and flexibi...
Tom Germeau: Mobile Apps: Finding the balance between performance and flexibi...
Chartbeat
 
Connecting the Worlds of Java and Ruby with JRuby
Connecting the Worlds of Java and Ruby with JRubyConnecting the Worlds of Java and Ruby with JRuby
Connecting the Worlds of Java and Ruby with JRuby
Nick Sieger
 
Asp.net mvc - Better User Experience with Kendo UI
Asp.net mvc - Better User Experience with Kendo UIAsp.net mvc - Better User Experience with Kendo UI
Asp.net mvc - Better User Experience with Kendo UI
Lohith Goudagere Nagaraj
 
How to bake an app in Dart and Polymer
How to bake an app in Dart and PolymerHow to bake an app in Dart and Polymer
How to bake an app in Dart and Polymer
Jana Moudrá
 
Intro to React - Featuring Modern JavaScript
Intro to React - Featuring Modern JavaScriptIntro to React - Featuring Modern JavaScript
Intro to React - Featuring Modern JavaScriptjasonsich
 
Introduction to Node.js
Introduction to Node.jsIntroduction to Node.js
Introduction to Node.js
Aaron Rosenberg
 
JRuby, Ruby, Rails and You on the Cloud
JRuby, Ruby, Rails and You on the CloudJRuby, Ruby, Rails and You on the Cloud
JRuby, Ruby, Rails and You on the Cloud
Hiro Asari
 
Ruby On Rails Seminar Basis Softexpo Feb2010
Ruby On Rails Seminar Basis Softexpo Feb2010Ruby On Rails Seminar Basis Softexpo Feb2010
Ruby On Rails Seminar Basis Softexpo Feb2010arif44
 
Ruby on Rails survival guide of an aged Java developer
Ruby on Rails survival guide of an aged Java developerRuby on Rails survival guide of an aged Java developer
Ruby on Rails survival guide of an aged Java developer
gicappa
 
The State of Front-end At CrowdTwist
The State of Front-end At CrowdTwistThe State of Front-end At CrowdTwist
The State of Front-end At CrowdTwistMark Fayngersh
 
Meteor Introduction
Meteor IntroductionMeteor Introduction
Meteor Introduction
Randell Hynes
 
Developing realtime apps with Drupal and NodeJS
Developing realtime apps with Drupal and NodeJS Developing realtime apps with Drupal and NodeJS
Developing realtime apps with Drupal and NodeJS
drupalcampest
 
Full Stack React Workshop [CSSC x GDSC]
Full Stack React Workshop [CSSC x GDSC]Full Stack React Workshop [CSSC x GDSC]
Full Stack React Workshop [CSSC x GDSC]
GDSC UofT Mississauga
 
Ember,js: Hipster Hamster Framework
Ember,js: Hipster Hamster FrameworkEmber,js: Hipster Hamster Framework
Ember,js: Hipster Hamster Framework
Billy Shih
 

Similar to Ember.js for SFHTML5 (20)

Crossing the Bridge: Connecting Rails and your Front-end Framework
Crossing the Bridge: Connecting Rails and your Front-end FrameworkCrossing the Bridge: Connecting Rails and your Front-end Framework
Crossing the Bridge: Connecting Rails and your Front-end Framework
 
Testing Big in JavaScript
Testing Big in JavaScriptTesting Big in JavaScript
Testing Big in JavaScript
 
Reactive application using meteor
Reactive application using meteorReactive application using meteor
Reactive application using meteor
 
Building Isomorphic Apps (JSConf.Asia 2014)
Building Isomorphic Apps (JSConf.Asia 2014)Building Isomorphic Apps (JSConf.Asia 2014)
Building Isomorphic Apps (JSConf.Asia 2014)
 
From Idea to App (or “How we roll at Small Town Heroes”)
From Idea to App (or “How we roll at Small Town Heroes”)From Idea to App (or “How we roll at Small Town Heroes”)
From Idea to App (or “How we roll at Small Town Heroes”)
 
Building single page applications
Building single page applicationsBuilding single page applications
Building single page applications
 
Tom Germeau: Mobile Apps: Finding the balance between performance and flexibi...
Tom Germeau: Mobile Apps: Finding the balance between performance and flexibi...Tom Germeau: Mobile Apps: Finding the balance between performance and flexibi...
Tom Germeau: Mobile Apps: Finding the balance between performance and flexibi...
 
Connecting the Worlds of Java and Ruby with JRuby
Connecting the Worlds of Java and Ruby with JRubyConnecting the Worlds of Java and Ruby with JRuby
Connecting the Worlds of Java and Ruby with JRuby
 
Asp.net mvc - Better User Experience with Kendo UI
Asp.net mvc - Better User Experience with Kendo UIAsp.net mvc - Better User Experience with Kendo UI
Asp.net mvc - Better User Experience with Kendo UI
 
How to bake an app in Dart and Polymer
How to bake an app in Dart and PolymerHow to bake an app in Dart and Polymer
How to bake an app in Dart and Polymer
 
Intro to React - Featuring Modern JavaScript
Intro to React - Featuring Modern JavaScriptIntro to React - Featuring Modern JavaScript
Intro to React - Featuring Modern JavaScript
 
Introduction to Node.js
Introduction to Node.jsIntroduction to Node.js
Introduction to Node.js
 
JRuby, Ruby, Rails and You on the Cloud
JRuby, Ruby, Rails and You on the CloudJRuby, Ruby, Rails and You on the Cloud
JRuby, Ruby, Rails and You on the Cloud
 
Ruby On Rails Seminar Basis Softexpo Feb2010
Ruby On Rails Seminar Basis Softexpo Feb2010Ruby On Rails Seminar Basis Softexpo Feb2010
Ruby On Rails Seminar Basis Softexpo Feb2010
 
Ruby on Rails survival guide of an aged Java developer
Ruby on Rails survival guide of an aged Java developerRuby on Rails survival guide of an aged Java developer
Ruby on Rails survival guide of an aged Java developer
 
The State of Front-end At CrowdTwist
The State of Front-end At CrowdTwistThe State of Front-end At CrowdTwist
The State of Front-end At CrowdTwist
 
Meteor Introduction
Meteor IntroductionMeteor Introduction
Meteor Introduction
 
Developing realtime apps with Drupal and NodeJS
Developing realtime apps with Drupal and NodeJS Developing realtime apps with Drupal and NodeJS
Developing realtime apps with Drupal and NodeJS
 
Full Stack React Workshop [CSSC x GDSC]
Full Stack React Workshop [CSSC x GDSC]Full Stack React Workshop [CSSC x GDSC]
Full Stack React Workshop [CSSC x GDSC]
 
Ember,js: Hipster Hamster Framework
Ember,js: Hipster Hamster FrameworkEmber,js: Hipster Hamster Framework
Ember,js: Hipster Hamster Framework
 

Recently uploaded

Epistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI supportEpistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI support
Alan Dix
 
DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
Kari Kakkonen
 
Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !
KatiaHIMEUR1
 
National Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practicesNational Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practices
Quotidiano Piemontese
 
Elevating Tactical DDD Patterns Through Object Calisthenics
Elevating Tactical DDD Patterns Through Object CalisthenicsElevating Tactical DDD Patterns Through Object Calisthenics
Elevating Tactical DDD Patterns Through Object Calisthenics
Dorra BARTAGUIZ
 
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
BookNet Canada
 
By Design, not by Accident - Agile Venture Bolzano 2024
By Design, not by Accident - Agile Venture Bolzano 2024By Design, not by Accident - Agile Venture Bolzano 2024
By Design, not by Accident - Agile Venture Bolzano 2024
Pierluigi Pugliese
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
Safe Software
 
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdfFIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance
 
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdfFIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance
 
Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1
DianaGray10
 
20240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 202420240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 2024
Matthew Sinclair
 
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
SOFTTECHHUB
 
Monitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR EventsMonitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR Events
Ana-Maria Mihalceanu
 
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdfFIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance
 
20240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 202420240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 2024
Matthew Sinclair
 
A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...
sonjaschweigert1
 
Video Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the FutureVideo Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the Future
Alpen-Adria-Universität
 
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
Neo4j
 
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
Neo4j
 

Recently uploaded (20)

Epistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI supportEpistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI support
 
DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
 
Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !
 
National Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practicesNational Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practices
 
Elevating Tactical DDD Patterns Through Object Calisthenics
Elevating Tactical DDD Patterns Through Object CalisthenicsElevating Tactical DDD Patterns Through Object Calisthenics
Elevating Tactical DDD Patterns Through Object Calisthenics
 
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
 
By Design, not by Accident - Agile Venture Bolzano 2024
By Design, not by Accident - Agile Venture Bolzano 2024By Design, not by Accident - Agile Venture Bolzano 2024
By Design, not by Accident - Agile Venture Bolzano 2024
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
 
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdfFIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdf
 
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdfFIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
 
Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1
 
20240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 202420240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 2024
 
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
 
Monitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR EventsMonitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR Events
 
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdfFIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
 
20240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 202420240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 2024
 
A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...
 
Video Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the FutureVideo Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the Future
 
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
 
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
 

Ember.js for SFHTML5

  • 1. SPAs Redux: Snappy, Performant Apps (with Ember.js) Anthony Bull Sr. Web Engineer, CrowdFlower SFHTML5 Meetup, January 31, 2013 1
  • 3. Ember.js MVC != server-side MVC 3
  • 4. tl;dr Ember.js provides the best balance of trade-offs of any (JS) MVC framework when it comes to building clean, well-factored client-side web apps. 4
  • 5. History of JS MVCs/SPAs/F2E* YUI Prototype/ Prototype/ script.aculo.us jQuery JavaScript 01 y 10 06 11 12 12 da 20 0 20 0 20 To 20 -2 -2 07 10 id rly m 20 20 ea * a somewhat-biased account 5
  • 6. Framework Comparisons convention over HTML for apps, Approach DIYer configuration not pages less code = more Top Pro flexibility corporate-backing productive Top Con re-create the wheel ramp up != trivial verbosity If I took you on a knife/spoon/fork swiss-army knife spork camping trip... 6
  • 8. A Template <script type="text/x-handlebars" data-template-name="application"> Hello, <strong>{{userName}}</strong>! </script> 8
  • 9. A View var view = Ember.View.create({ templateName: 'application' }); 9
  • 10. A Controller App.ApplicationController = Ember.Controller.extend(); 10
  • 11. A Route App.ApplicationRoute = Ember.Route.extend({ setupController: function(controller,user) { controller.set(‘content’, App.user); } }) 11
  • 12. An Object App.user = Ember.Object.create({ name: 'World!' }); 12
  • 13. An App App = Ember.Application.create(); App.user = Ember.Object.create({ name: 'World!' }); var view = Ember.View.extend({ templateName: 'application' }); App.ApplicationRoute = Ember.Route.extend({ setupController: function(controller, user){ controller.set('content', App.user); } }); 13
  • 15. Naming (Very Important!!!)* Template stations View App.StationsController Controller App.StationView Router this.resource('stations') App.StationsRoute Model App.Station * convention over configuration 15
  • 16. Testing • You should do it • QUnit • Selenium (Lebowski gem?) • Capybara • PhantomJS/poltergeist 16
  • 17. Ember.js Resources • Learn more • Ember.js Project • Marakana : Pro Ember.js • Homepage • Peepcode : Ember.js • GitHub • This week in Ember.js ... • Documentation • Tom on Ember Data, Oct. 2012 • http://emberjs.com/guides/ • Peter on Views, Sep. 2012 • Community • Yehuda on Ember, Sep. 2012 • Ember.js on StackOverflow • Which MVC framework? • IRC : freenode.net #emberjs 17
  • 18. tl;dr - II • Pedigree (SproutCore, jQuery, Merb, Rails) • Community (tremendous growth in last year) • Stability (state mgt./data sync/conventions/docs) 18
  • 19. Jobs!!! My job! 19
  • 20. • We’re hiring! (Ember.js/Rails) • Ski trip! 20
  • 21. Thanks! Kariem Hussein, Exabit Alexander Sorokin Mars Hall CVP & Engr at CrowdFlower Tatiana Josephy Tom Dale @tomdale Jakub Arnold @darthdeus Yehuda Katz @wycats Trek Glowacki @trek Peter Wagenet @wagenet Clemens Müller @pangratz Tilde @tildeio Andy Matthews @commadelimited Contact me at: anthony@crowdflower.com @inkredabull 21
  • 22. More... 22
  • 23. History of Ember.js Apple (MobileMe & iCloud.com) Amber.js / Ember.js SproutCore 1.0.0-pre.4 Sproutcore 2 0.9.6 0.9.8 RC 1.0 1.0.0-pre.1 1.0.0-pre.2 1.0.0-pre.3 08 07 11 11 g y in da 20 20 20 20 m To Co ay c De M * http://www.cerebris.com/blog/2012/01/20/warming-up-to-ember-js/ http://en.wikipedia.org/wiki/SproutCore 23
  • 25. Who’s behind Ember.js? Tom Dale Yehuda Katz 25