Ember.js


Rise of the Clients


Erik Bryn

@ebryn

erikbryn.com

One of my best friends started learning web development
How would you recommend someone start learning?
... brace yourselves ...
#1 HTML/CSS
#2 jQuery (then JavaScript, hopefully)
Now what?
PHP!
Is that still the right path today?
I don't think so.
So why PHP?
It's the easiest way to start generating dynamic HTML, right?
Not anymore.
Javascript MVC frameworks have changed things
Backends should just be API servers
Treat your web app like your iOS or Android app
It's easier to build an Ember app than it ever was to build a Rails app
The amount of code it takes to get up and running
with Ember can easily fit on a slide

<!DOCTYPE html>
<html>
<body>
  <script src="jquery.js"></script>
  <script src="handlebars.js"></script>
  <script src="ember.js"></script>

  <script type="text/x-handlebars">
    Hello World!
  </script>

  <script>
    App = Ember.Application.create();
  </script>
</body>
</html>
          
You can start building an Ember app without a backend

The New Routerâ„¢


App.Router.map(function() {

  // users template will be displayed when navigating to /users
  this.resource("users");

  // posts.index template will be displayed when navigating to /posts
  this.resource("posts", function() {

    // posts.show template will be displayed when navigating to /posts/1
    this.route('show', {path: ':post_id'});

    // posts.edit template will be displayed when navigating to /posts/1/edit
    this.route('edit', {path: ':post_id/edit'});
  });
});
          
Ember Data & the Fixture adapter

Model definition


App.Employee = DS.Model.extend({
  name: DS.attr('string'),
  goal: DS.attr('number'),
  weighIns: DS.hasMany('App.WeighIn')
});

App.WeighIn = DS.Model.extend({
  weight: DS.attr('number')
});
          

Fixtures


App.Employee.FIXTURES = [
  {id: 1, name: 'Erik', goal: 185, weighIns: [1, 2]},
  {id: 2, name: 'Carl', goal: 175, weighIns: [3]},
  {id: 3, name: 'Tom',  goal: 185, weighIns: [4]}
];

App.WeighIn.FIXTURES = [
  {id: 1, weight: 200},
  {id: 2, weight: 190},
  {id: 3, weight: 185},
  {id: 4, weight: 190}
];
          
Prototyping has never been so easy
So, here's the takeaway
It needs to be easier to build web apps with
user experiences as good or better than native apps
We're doing our best to rethink how web apps are architected
and to make it easier for developers to build ambitious apps
Ember will continue to improve
and help move the web forward
We'd love to have your help
Ember 1.0 RC2 is planned for tomorrow
EmberCasts.com coming soon
Thanks!

Erik Bryn

@ebryn

erik@erikbryn.com

Q&A