KEMBAR78
The Ember.js Framework - Everything You Need To Know | PDF
What is Ember?
Full Stack
Aspirational
Without boiling the ocean
Browsers figured out how to have stability without stagnation
We copied them
Rolling in Best Practices
Chasing the Hype Dragon
We are exhausted of chasing the hype dragon. Finding good ideas and rolling them into something stable and cutting edge is better.
Delivering On Our Promises
If you look at Ember at any given point, it may look like there's a lot of vaporware, but we have a history of coming through.
Ember CLI
Ember App Kit experimented, and Ember CLI delivers a stable, framework-level solution.
Ember CLI
$	
  ember	
  server
Ember App Kit experimented, and Ember CLI delivers a stable, framework-level solution.
My EmberCamp keynote
ES6 Modularization
<script	
  type="text/x-­‐placeholder">
Ember 1.8: Metal Views
Script tags finally removed in stable, tomorrow!
Up to Date
bustle.com 1.8.0-beta.5
discourse.org 1.6.0
vine.co 1.7.0
squareup.com 1.5.0
intercom.io 1.7.0
travis-ci.org 1.6.1
ghost.org 1.7.0
We take stability very seriously, and are rewarded with apps staying largely up to date. This means an ecosystem that is able to take advantage of
improvements.
Demo
We're Always Learning
We learned from Backbone that there was virtue in a small scope and keeping small (relative to SproutCore!)
We learned from Angular the virtue of directives and dependency injection.
And we learned from React the virtue of more explicit data flow and coarses updated made fast via virtual DOMs.
So what is Ember?
Consistency!
Our highest value is consistency.
/apps/1
It doesn't matter how you navigate to a route; the vast majority of the code is identical. This allows you to experiment and tinker a lot more without things
breaking.
/apps/1
navigate
It doesn't matter how you navigate to a route; the vast majority of the code is identical. This allows you to experiment and tinker a lot more without things
breaking.
/apps/1
navigate
/apps/2
It doesn't matter how you navigate to a route; the vast majority of the code is identical. This allows you to experiment and tinker a lot more without things
breaking.
/apps/1
navigate
/apps/2 /settings
It doesn't matter how you navigate to a route; the vast majority of the code is identical. This allows you to experiment and tinker a lot more without things
breaking.
/apps/1
navigate
/apps/2 /settings
?
It doesn't matter how you navigate to a route; the vast majority of the code is identical. This allows you to experiment and tinker a lot more without things
breaking.
Here's a bit of app state (the user's name).
Yehuda Katz
Here's a bit of app state (the user's name).
Yehuda Katz
I open the Ember inspector and find the user model.
Yehuda Katz
I edit it.
Yehuda KatzYehuda Katz
Yehuda Katz
Yehuda Katz
And you can see that the name updates.
And you can see that the name updates.
• Initial Load
• Web Socket
• Settings Page
• Internationalization
• ...
There are many ways for this application-wide model to update, and many places where it appears. Keeping the update consistent (data bindings) means
you can change the flow of those updates and never have the UI get out of sync.
• Initial Load
• Web Socket
• Settings Page
• Internationalization
• ...
Yehuda Katz
There are many ways for this application-wide model to update, and many places where it appears. Keeping the update consistent (data bindings) means
you can change the flow of those updates and never have the UI get out of sync.
One Representation
&
One Code Path
There is only one representation of visual UI (data bound template with declarative data flow) and one code path for navigation (routes). This means that
navigating in a different order or loading data differently (or adding push!) doesn't break things.
Freedom to Explore and Tinker
This gives you the freedom to explore new ideas far more aggressively and refactor your UI without fear. This is something we have taken advantage of in
Skylight and I can attest that it works as advertised.
Without Fear
The Future
The Future
?
HTMLBars!
The two things I am most excited about are getting rid of {{bind-attr}} and the macro-performance improvements we will eventually get from coarser
updates and virtual-DOM-style diffing. The micro-improvements (up to 2x) don't hurt either.
HTMLBars!
<a	
  class="{{active}}"	
  href="{{url}}.html">
The two things I am most excited about are getting rid of {{bind-attr}} and the macro-performance improvements we will eventually get from coarser
updates and virtual-DOM-style diffing. The micro-improvements (up to 2x) don't hurt either.
HTMLBars!
<a	
  class="{{active}}"	
  href="{{url}}.html">
The two things I am most excited about are getting rid of {{bind-attr}} and the macro-performance improvements we will eventually get from coarser
updates and virtual-DOM-style diffing. The micro-improvements (up to 2x) don't hurt either.
Simpler and Clearer
Simpler and Clearer
• Controllers
Simpler and Clearer
• Controllers
• Top-Level Components driven by the Router
Simpler and Clearer
• Controllers
• Top-Level Components driven by the Router
• Simplified inter-component data-flow and virtual DOM inspired by React.js
Simpler and Clearer
• Controllers
• Top-Level Components driven by the Router
• Simplified inter-component data-flow and virtual DOM inspired by React.js
• Finished full-stack documented all together on the website
• Ember w/ Modules
• Ember Data
• Ember CLI
• Ember Inspector
Stop Chasing the Hype Dragon
"Eventually all the good ideas will end up in Ember"
Ember's release process gives you Stability without Stagnation. We stay close to the cutting edge (modules, build tooling, virtual DOM) but in an orderly
way that you can build apps on. Join us!

The Ember.js Framework - Everything You Need To Know

  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
    Browsers figured outhow to have stability without stagnation
  • 7.
  • 9.
    Rolling in BestPractices
  • 10.
    Chasing the HypeDragon We are exhausted of chasing the hype dragon. Finding good ideas and rolling them into something stable and cutting edge is better.
  • 11.
    Delivering On OurPromises If you look at Ember at any given point, it may look like there's a lot of vaporware, but we have a history of coming through.
  • 17.
    Ember CLI Ember AppKit experimented, and Ember CLI delivers a stable, framework-level solution.
  • 18.
    Ember CLI $  ember  server Ember App Kit experimented, and Ember CLI delivers a stable, framework-level solution.
  • 19.
  • 25.
  • 26.
  • 28.
    Ember 1.8: MetalViews Script tags finally removed in stable, tomorrow!
  • 31.
    Up to Date bustle.com1.8.0-beta.5 discourse.org 1.6.0 vine.co 1.7.0 squareup.com 1.5.0 intercom.io 1.7.0 travis-ci.org 1.6.1 ghost.org 1.7.0 We take stability very seriously, and are rewarded with apps staying largely up to date. This means an ecosystem that is able to take advantage of improvements.
  • 32.
  • 33.
  • 35.
    We learned fromBackbone that there was virtue in a small scope and keeping small (relative to SproutCore!)
  • 36.
    We learned fromAngular the virtue of directives and dependency injection.
  • 37.
    And we learnedfrom React the virtue of more explicit data flow and coarses updated made fast via virtual DOMs.
  • 38.
    So what isEmber?
  • 39.
  • 40.
    /apps/1 It doesn't matterhow you navigate to a route; the vast majority of the code is identical. This allows you to experiment and tinker a lot more without things breaking.
  • 41.
    /apps/1 navigate It doesn't matterhow you navigate to a route; the vast majority of the code is identical. This allows you to experiment and tinker a lot more without things breaking.
  • 42.
    /apps/1 navigate /apps/2 It doesn't matterhow you navigate to a route; the vast majority of the code is identical. This allows you to experiment and tinker a lot more without things breaking.
  • 43.
    /apps/1 navigate /apps/2 /settings It doesn'tmatter how you navigate to a route; the vast majority of the code is identical. This allows you to experiment and tinker a lot more without things breaking.
  • 44.
    /apps/1 navigate /apps/2 /settings ? It doesn'tmatter how you navigate to a route; the vast majority of the code is identical. This allows you to experiment and tinker a lot more without things breaking.
  • 45.
    Here's a bitof app state (the user's name).
  • 46.
    Yehuda Katz Here's abit of app state (the user's name).
  • 47.
    Yehuda Katz I openthe Ember inspector and find the user model.
  • 48.
  • 49.
  • 50.
  • 51.
    Yehuda Katz And youcan see that the name updates.
  • 52.
    And you cansee that the name updates.
  • 53.
    • Initial Load •Web Socket • Settings Page • Internationalization • ... There are many ways for this application-wide model to update, and many places where it appears. Keeping the update consistent (data bindings) means you can change the flow of those updates and never have the UI get out of sync.
  • 54.
    • Initial Load •Web Socket • Settings Page • Internationalization • ... Yehuda Katz There are many ways for this application-wide model to update, and many places where it appears. Keeping the update consistent (data bindings) means you can change the flow of those updates and never have the UI get out of sync.
  • 55.
    One Representation & One CodePath There is only one representation of visual UI (data bound template with declarative data flow) and one code path for navigation (routes). This means that navigating in a different order or loading data differently (or adding push!) doesn't break things.
  • 56.
    Freedom to Exploreand Tinker This gives you the freedom to explore new ideas far more aggressively and refactor your UI without fear. This is something we have taken advantage of in Skylight and I can attest that it works as advertised.
  • 57.
  • 58.
  • 59.
  • 60.
    HTMLBars! The two thingsI am most excited about are getting rid of {{bind-attr}} and the macro-performance improvements we will eventually get from coarser updates and virtual-DOM-style diffing. The micro-improvements (up to 2x) don't hurt either.
  • 61.
    HTMLBars! <a  class="{{active}}"  href="{{url}}.html"> Thetwo things I am most excited about are getting rid of {{bind-attr}} and the macro-performance improvements we will eventually get from coarser updates and virtual-DOM-style diffing. The micro-improvements (up to 2x) don't hurt either.
  • 62.
    HTMLBars! <a  class="{{active}}"  href="{{url}}.html"> Thetwo things I am most excited about are getting rid of {{bind-attr}} and the macro-performance improvements we will eventually get from coarser updates and virtual-DOM-style diffing. The micro-improvements (up to 2x) don't hurt either.
  • 63.
  • 64.
  • 65.
    Simpler and Clearer •Controllers • Top-Level Components driven by the Router
  • 66.
    Simpler and Clearer •Controllers • Top-Level Components driven by the Router • Simplified inter-component data-flow and virtual DOM inspired by React.js
  • 67.
    Simpler and Clearer •Controllers • Top-Level Components driven by the Router • Simplified inter-component data-flow and virtual DOM inspired by React.js • Finished full-stack documented all together on the website • Ember w/ Modules • Ember Data • Ember CLI • Ember Inspector
  • 68.
    Stop Chasing theHype Dragon "Eventually all the good ideas will end up in Ember"
  • 69.
    Ember's release processgives you Stability without Stagnation. We stay close to the cutting edge (modules, build tooling, virtual DOM) but in an orderly way that you can build apps on. Join us!