SlideShare ist ein Scribd-Unternehmen logo
1 von 25
Downloaden Sie, um offline zu lesen
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

Weitere ähnliche Inhalte

Ähnlich wie 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 FrameworkDaniel Spector
 
Testing Big in JavaScript
Testing Big in JavaScriptTesting Big in JavaScript
Testing Big in JavaScriptRobert DeLuca
 
Reactive application using meteor
Reactive application using meteorReactive application using meteor
Reactive application using meteorSapna 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 applicationsSC5.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 JRubyNick 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 UILohith 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 PolymerJana Moudrá
 
Intro to React - Featuring Modern JavaScript
Intro to React - Featuring Modern JavaScriptIntro to React - Featuring Modern JavaScript
Intro to React - Featuring Modern JavaScriptjasonsich
 
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 CloudHiro 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 developergicappa
 
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
 
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 FrameworkBilly Shih
 

Ähnlich wie 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
 

Kürzlich hochgeladen

Ransomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfRansomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfOverkill Security
 
Cyberprint. Dark Pink Apt Group [EN].pdf
Cyberprint. Dark Pink Apt Group [EN].pdfCyberprint. Dark Pink Apt Group [EN].pdf
Cyberprint. Dark Pink Apt Group [EN].pdfOverkill Security
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyKhushali Kathiriya
 
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...apidays
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Orbitshub
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Victor Rentea
 
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...apidays
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherRemote DBA Services
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodJuan lago vázquez
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoffsammart93
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusZilliz
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxRustici Software
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...Zilliz
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProduct Anonymous
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsNanddeep Nachan
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Jeffrey Haguewood
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobeapidays
 

Kürzlich hochgeladen (20)

Ransomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfRansomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdf
 
Cyberprint. Dark Pink Apt Group [EN].pdf
Cyberprint. Dark Pink Apt Group [EN].pdfCyberprint. Dark Pink Apt Group [EN].pdf
Cyberprint. Dark Pink Apt Group [EN].pdf
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
 
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with Milvus
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 

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