Ember.js
Guts & Goals
Ember.js
Guts
Ember: Guts & Goals
ember new sample-application
ember generate route whatever
ember serve
ember test
ember build
ember install ember-cli-mirage
ember install ember-cli-mirage
ember serve
ember test
ember build
my-project/
├── app/
│ ├── coffee/
│ │ └── app.coffee
│ └── scss/
│ ├── _vars.scss
│ └── app.scss
├── dist/
│ ├── app.css
│ └── app.js
└── Brocfile.js
/* Brocfile.js */
// Import some Broccoli plugins
var compileSass = require('broccoli-sass');
var compileCoffee = require('broccoli-coffee');
var mergeTrees = require('broccoli-merge-trees');
// Specify the Sass and Coffeescript directories
var sassDir = 'app/scss';
var coffeeDir = 'app/coffeescript';
// Tell Broccoli how we want the assets
// to be compiled
var styles = compileSass([sassDir],
'app.scss', 'app.css');
var scripts = compileCoffee(coffeeDir);
// Merge the compiled styles and scripts
// into one output directory.
module.exports = mergeTrees([styles, scripts]);
What's inside of Ember.js?
require.js
jQuery
rsvp.js
route-recognizer
Handlebars *
Ember Data *
Ember Data
Releases
Ember.js Ember Data
1.0.0
1.1.0
1.2.0
Jan 1, 2014 1.3.0
1.4.0
1.5.0
1.6.0
1.7.0
1.8.0
1.9.0
Jan 1, 2015
1.10.0
1.11.0
1.12.0
1.13.0
2.0.0
2.1.0
2.2.0
Jan 1, 2016
2.3.0
2.4.0
2.5.0
1.0.0-beta.11.0.0-beta.2
1.0.0-beta.3
1.0.0-beta.4 Jan 1, 20141.0.0-beta.51.0.0-beta.6
1.0.0-beta.7
1.0.0-beta.8
1.0.0-beta.9
1.0.0-beta.10
1.0.0-beta.11
1.0.0-beta.12
1.0.0-beta.14 Jan 1, 2015
1.0.0-beta.15
1.0.0-beta.16
1.0.0-beta.171.0.0-beta.18
1.0.0-beta.191.13.0
2.0.0
2.1.0
2.2.0
Jan 1, 20162.3.0
2.4.0
2.5.0
// app/models/blog-post.js
import DS from 'ember-data';
export default DS.Model.extend({
title: DS.attr('string'),
createdAt: DS.attr('date'),
comments: DS.hasMany('comment')
});
// app/models/comment.js
import DS from 'ember-data';
export default DS.Model.extend({
body: DS.attr('string'),
username: DS.attr('string'),
post: DS.belongsTo('blog-post')
});
Ember: Guts & Goals
Handlebars
Releases
Ember.js  
1.0.0
1.1.0
1.2.0
Jan 1, 2014 1.3.0
1.4.0
1.5.0
1.6.0
1.7.0
1.8.0
1.9.0
Jan 1, 2015
1.10.0
1.11.0
1.12.0
1.13.0
2.0.0
2.1.0
2.2.0
Jan 1, 2016
2.3.0
2.4.0
2.5.0
Handlebars
HTMLBars
Glimmer
Handlebars
<ul>
{{#each items as |item|}}
{{#if item.completed}}
<li><del>{{item.title}}</del></li>
{{else}}
<li>{{item.title}}</li>
{{/if}}
{{/each}}
</ul>
function(items) {
var html = '<ul>';
for(var i = 0; i < items.length; i++) {
var item = items[i];
html += '<li>';
if(item.completed) {
html += '<del>' + item.title + '</del>';
} else {
html += item.title;
}
html += '</li>';
}
return html + '</ul>';
}
HTMLbars
<ul>
{{#each items as |item|}}
{{#if item.completed}}
<li><del>{{item.title}}</del></li>
{{else}}
<li>{{item.title}}</li>
{{/if}}
{{/each}}
</ul>
function(items) {
var list = document.createElement('ul');
for(var i = 0; i < items.length; i++) {
var item = items[i];
var row = document.createElement('li');
var text = dcument.createTextNode(item.title);
if(item.completed) {
var del = document.createElement('del');
del.appendChild(text);
row.appendChild(del);
} else {
row.appendChild(text);
}
list.appendChild(row);
}
return list;
}
Handlebars
<script id="metamorph-173-start" type="text/x-placeholder"></script>
<li><del>
<script id="metamorph-174-start" type="text/x-placeholder"></script>
TDL item text
<script id="metamorph-174-end" type="text/x-placeholder"></script>
</del></li>
<script id="metamorph-173-end" type="text/x-placeholder"></script>
HTMLbars
<li><del>TDL item text</del></li>
Handlebars
<a {{bind-attr href=url}}></a>
HTMLbars
<a href={{url}}></a>
Glimmer
Ember with Glimmer
Ember.js
Goals
Releases
Ember.js Ember Data
1.0.0
1.1.0
1.2.0
Jan 1, 2014 1.3.0
1.4.0
1.5.0
1.6.0
1.7.0
1.8.0
1.9.0
Jan 1, 2015
1.10.0
1.11.0
1.12.0
1.13.0
2.0.0
2.1.0
2.2.0
Jan 1, 2016
2.3.0
2.4.0
2.5.0
1.0.0-beta.11.0.0-beta.2
1.0.0-beta.3
1.0.0-beta.4 Jan 1, 20141.0.0-beta.51.0.0-beta.6
1.0.0-beta.7
1.0.0-beta.8
1.0.0-beta.9
1.0.0-beta.10
1.0.0-beta.11
1.0.0-beta.12
1.0.0-beta.14 Jan 1, 2015
1.0.0-beta.15
1.0.0-beta.16
1.0.0-beta.171.0.0-beta.18
1.0.0-beta.191.13.0
2.0.0
2.1.0
2.2.0
Jan 1, 20162.3.0
2.4.0
2.5.0
Builds
Canary Beta Release LTS
2.0
2.x
Routable Components
<component>vs. {{component}}
asdfadsfasdfasdfs
Engines
FastBoot
Glimmer 2
More ES6 syntax (Decorators)
Universal Event Dispatch
The End

More Related Content

PDF
Ember background basics
PDF
Web APIs you (probably) didn't know existed
PDF
Puppet at janrain
PPTX
Canjs
PDF
ReactJS & Material-ui Hello world
PPTX
Leap Motion Development (Rohan Puri)
PDF
Puppet modules for Fun and Profit
Ember background basics
Web APIs you (probably) didn't know existed
Puppet at janrain
Canjs
ReactJS & Material-ui Hello world
Leap Motion Development (Rohan Puri)
Puppet modules for Fun and Profit

What's hot (20)

PDF
V2 and beyond
PDF
AnsibleFest 2014 - Role Tips and Tricks
PDF
PDF
Persistent mobile JavaScript
PDF
Build web application by express
PDF
React.js触ってみた 吉澤和香奈
KEY
Requirejs
PPTX
Spine.js
PDF
Web Tech & Architecture
PDF
Ansible Assume AWS Role
PDF
Casl. isomorphic permission management.pptx
PDF
Javascript is your (Auto)mate
PDF
Automating OSD and Post-OSD Configuration with Powershell and Orchestrator
KEY
wwc start-launched
PPTX
jQuery Foot-Gun Features
PDF
A re introduction to webpack - reactfoo - mumbai
PPTX
Using Ansible Dynamic Inventory with Amazon EC2
PDF
More tips n tricks
PDF
Hacking ansible
KEY
CakePHP + PostgreSQL
V2 and beyond
AnsibleFest 2014 - Role Tips and Tricks
Persistent mobile JavaScript
Build web application by express
React.js触ってみた 吉澤和香奈
Requirejs
Spine.js
Web Tech & Architecture
Ansible Assume AWS Role
Casl. isomorphic permission management.pptx
Javascript is your (Auto)mate
Automating OSD and Post-OSD Configuration with Powershell and Orchestrator
wwc start-launched
jQuery Foot-Gun Features
A re introduction to webpack - reactfoo - mumbai
Using Ansible Dynamic Inventory with Amazon EC2
More tips n tricks
Hacking ansible
CakePHP + PostgreSQL
Ad

Viewers also liked (20)

PPT
20120518 mssql table_schema_xml_namespace
PPTX
What I learned in my First 9 months of Ember
PDF
electron for emberists
PDF
Delivering with ember.js
PDF
Testing ember data transforms
PPTX
Velocity spa faster_092116
PDF
Ember Community 2016 - Be the Bark
PPTX
Masa Israel Programs Overview
PDF
LA Ember.js Meetup, Jan 2017
PDF
Nest v. Flat with EmberData
PDF
Developing Single Page Apps with Ember.js
PDF
Intro to emberjs
PDF
Ember.js the Second Step
PDF
Ember.js internals backburner.js and rsvp.js
PDF
Write Once, Run Everywhere - Ember.js Munich
PDF
Ember.js firebase HTML5 NYC
PDF
Parse Apps with Ember.js
PDF
Complex Architectures in Ember
PPTX
Intro to Ember.JS 2016
PDF
Presentation react
20120518 mssql table_schema_xml_namespace
What I learned in my First 9 months of Ember
electron for emberists
Delivering with ember.js
Testing ember data transforms
Velocity spa faster_092116
Ember Community 2016 - Be the Bark
Masa Israel Programs Overview
LA Ember.js Meetup, Jan 2017
Nest v. Flat with EmberData
Developing Single Page Apps with Ember.js
Intro to emberjs
Ember.js the Second Step
Ember.js internals backburner.js and rsvp.js
Write Once, Run Everywhere - Ember.js Munich
Ember.js firebase HTML5 NYC
Parse Apps with Ember.js
Complex Architectures in Ember
Intro to Ember.JS 2016
Presentation react
Ad

Similar to Ember: Guts & Goals (20)

PPTX
Introduction to Ember.js
PDF
Riding the Edge with Ember.js
PDF
Workshop 16: EmberJS Parte I
PPTX
Getting into ember.js
PPTX
Ember - introduction
PDF
Ember presentation
PDF
Stackup New Languages Talk: Ember is for Everybody
PDF
A Beginner's Guide to Ember
PPTX
Intro to EmberJS
PDF
Create an application with ember
PPT
Ember.js: Jump Start
PDF
Ember.js Meetup Brussels 31/10/2013
PPTX
Ember js java script framework
PPTX
Introduction to Ember.js
PDF
Intro to ember.js
PDF
The Ember.js Framework - Everything You Need To Know
PPTX
The road to Ember.js 2.0
PPTX
Full slidescr16
PDF
Ember vs Backbone
PDF
Ember addons, served three ways
Introduction to Ember.js
Riding the Edge with Ember.js
Workshop 16: EmberJS Parte I
Getting into ember.js
Ember - introduction
Ember presentation
Stackup New Languages Talk: Ember is for Everybody
A Beginner's Guide to Ember
Intro to EmberJS
Create an application with ember
Ember.js: Jump Start
Ember.js Meetup Brussels 31/10/2013
Ember js java script framework
Introduction to Ember.js
Intro to ember.js
The Ember.js Framework - Everything You Need To Know
The road to Ember.js 2.0
Full slidescr16
Ember vs Backbone
Ember addons, served three ways

Recently uploaded (20)

PDF
5-Ways-AI-is-Revolutionizing-Telecom-Quality-Engineering.pdf
PDF
SaaS reusability assessment using machine learning techniques
PDF
Accessing-Finance-in-Jordan-MENA 2024 2025.pdf
PDF
giants, standing on the shoulders of - by Daniel Stenberg
PPTX
MuleSoft-Compete-Deck for midddleware integrations
PPTX
Training Program for knowledge in solar cell and solar industry
PPTX
AI-driven Assurance Across Your End-to-end Network With ThousandEyes
PDF
Rapid Prototyping: A lecture on prototyping techniques for interface design
PDF
EIS-Webinar-Regulated-Industries-2025-08.pdf
PDF
Connector Corner: Transform Unstructured Documents with Agentic Automation
PPTX
agenticai-neweraofintelligence-250529192801-1b5e6870.pptx
PDF
Transform-Your-Factory-with-AI-Driven-Quality-Engineering.pdf
DOCX
Basics of Cloud Computing - Cloud Ecosystem
PDF
Electrocardiogram sequences data analytics and classification using unsupervi...
PDF
NewMind AI Weekly Chronicles – August ’25 Week IV
PDF
Enhancing plagiarism detection using data pre-processing and machine learning...
PDF
4 layer Arch & Reference Arch of IoT.pdf
PPTX
SGT Report The Beast Plan and Cyberphysical Systems of Control
PDF
A symptom-driven medical diagnosis support model based on machine learning te...
PDF
The-2025-Engineering-Revolution-AI-Quality-and-DevOps-Convergence.pdf
5-Ways-AI-is-Revolutionizing-Telecom-Quality-Engineering.pdf
SaaS reusability assessment using machine learning techniques
Accessing-Finance-in-Jordan-MENA 2024 2025.pdf
giants, standing on the shoulders of - by Daniel Stenberg
MuleSoft-Compete-Deck for midddleware integrations
Training Program for knowledge in solar cell and solar industry
AI-driven Assurance Across Your End-to-end Network With ThousandEyes
Rapid Prototyping: A lecture on prototyping techniques for interface design
EIS-Webinar-Regulated-Industries-2025-08.pdf
Connector Corner: Transform Unstructured Documents with Agentic Automation
agenticai-neweraofintelligence-250529192801-1b5e6870.pptx
Transform-Your-Factory-with-AI-Driven-Quality-Engineering.pdf
Basics of Cloud Computing - Cloud Ecosystem
Electrocardiogram sequences data analytics and classification using unsupervi...
NewMind AI Weekly Chronicles – August ’25 Week IV
Enhancing plagiarism detection using data pre-processing and machine learning...
4 layer Arch & Reference Arch of IoT.pdf
SGT Report The Beast Plan and Cyberphysical Systems of Control
A symptom-driven medical diagnosis support model based on machine learning te...
The-2025-Engineering-Revolution-AI-Quality-and-DevOps-Convergence.pdf

Ember: Guts & Goals

  • 4. ember new sample-application ember generate route whatever ember serve ember test ember build ember install ember-cli-mirage
  • 8. ember build my-project/ ├── app/ │ ├── coffee/ │ │ └── app.coffee │ └── scss/ │ ├── _vars.scss │ └── app.scss ├── dist/ │ ├── app.css │ └── app.js └── Brocfile.js /* Brocfile.js */ // Import some Broccoli plugins var compileSass = require('broccoli-sass'); var compileCoffee = require('broccoli-coffee'); var mergeTrees = require('broccoli-merge-trees'); // Specify the Sass and Coffeescript directories var sassDir = 'app/scss'; var coffeeDir = 'app/coffeescript'; // Tell Broccoli how we want the assets // to be compiled var styles = compileSass([sassDir], 'app.scss', 'app.css'); var scripts = compileCoffee(coffeeDir); // Merge the compiled styles and scripts // into one output directory. module.exports = mergeTrees([styles, scripts]);
  • 9. What's inside of Ember.js? require.js jQuery rsvp.js route-recognizer Handlebars * Ember Data *
  • 11. Releases Ember.js Ember Data 1.0.0 1.1.0 1.2.0 Jan 1, 2014 1.3.0 1.4.0 1.5.0 1.6.0 1.7.0 1.8.0 1.9.0 Jan 1, 2015 1.10.0 1.11.0 1.12.0 1.13.0 2.0.0 2.1.0 2.2.0 Jan 1, 2016 2.3.0 2.4.0 2.5.0 1.0.0-beta.11.0.0-beta.2 1.0.0-beta.3 1.0.0-beta.4 Jan 1, 20141.0.0-beta.51.0.0-beta.6 1.0.0-beta.7 1.0.0-beta.8 1.0.0-beta.9 1.0.0-beta.10 1.0.0-beta.11 1.0.0-beta.12 1.0.0-beta.14 Jan 1, 2015 1.0.0-beta.15 1.0.0-beta.16 1.0.0-beta.171.0.0-beta.18 1.0.0-beta.191.13.0 2.0.0 2.1.0 2.2.0 Jan 1, 20162.3.0 2.4.0 2.5.0
  • 12. // app/models/blog-post.js import DS from 'ember-data'; export default DS.Model.extend({ title: DS.attr('string'), createdAt: DS.attr('date'), comments: DS.hasMany('comment') }); // app/models/comment.js import DS from 'ember-data'; export default DS.Model.extend({ body: DS.attr('string'), username: DS.attr('string'), post: DS.belongsTo('blog-post') });
  • 15. Releases Ember.js   1.0.0 1.1.0 1.2.0 Jan 1, 2014 1.3.0 1.4.0 1.5.0 1.6.0 1.7.0 1.8.0 1.9.0 Jan 1, 2015 1.10.0 1.11.0 1.12.0 1.13.0 2.0.0 2.1.0 2.2.0 Jan 1, 2016 2.3.0 2.4.0 2.5.0 Handlebars HTMLBars Glimmer
  • 16. Handlebars <ul> {{#each items as |item|}} {{#if item.completed}} <li><del>{{item.title}}</del></li> {{else}} <li>{{item.title}}</li> {{/if}} {{/each}} </ul> function(items) { var html = '<ul>'; for(var i = 0; i < items.length; i++) { var item = items[i]; html += '<li>'; if(item.completed) { html += '<del>' + item.title + '</del>'; } else { html += item.title; } html += '</li>'; } return html + '</ul>'; }
  • 17. HTMLbars <ul> {{#each items as |item|}} {{#if item.completed}} <li><del>{{item.title}}</del></li> {{else}} <li>{{item.title}}</li> {{/if}} {{/each}} </ul> function(items) { var list = document.createElement('ul'); for(var i = 0; i < items.length; i++) { var item = items[i]; var row = document.createElement('li'); var text = dcument.createTextNode(item.title); if(item.completed) { var del = document.createElement('del'); del.appendChild(text); row.appendChild(del); } else { row.appendChild(text); } list.appendChild(row); } return list; }
  • 18. Handlebars <script id="metamorph-173-start" type="text/x-placeholder"></script> <li><del> <script id="metamorph-174-start" type="text/x-placeholder"></script> TDL item text <script id="metamorph-174-end" type="text/x-placeholder"></script> </del></li> <script id="metamorph-173-end" type="text/x-placeholder"></script> HTMLbars <li><del>TDL item text</del></li>
  • 22. Releases Ember.js Ember Data 1.0.0 1.1.0 1.2.0 Jan 1, 2014 1.3.0 1.4.0 1.5.0 1.6.0 1.7.0 1.8.0 1.9.0 Jan 1, 2015 1.10.0 1.11.0 1.12.0 1.13.0 2.0.0 2.1.0 2.2.0 Jan 1, 2016 2.3.0 2.4.0 2.5.0 1.0.0-beta.11.0.0-beta.2 1.0.0-beta.3 1.0.0-beta.4 Jan 1, 20141.0.0-beta.51.0.0-beta.6 1.0.0-beta.7 1.0.0-beta.8 1.0.0-beta.9 1.0.0-beta.10 1.0.0-beta.11 1.0.0-beta.12 1.0.0-beta.14 Jan 1, 2015 1.0.0-beta.15 1.0.0-beta.16 1.0.0-beta.171.0.0-beta.18 1.0.0-beta.191.13.0 2.0.0 2.1.0 2.2.0 Jan 1, 20162.3.0 2.4.0 2.5.0
  • 24. 2.0