Skip to content

Instantly share code, notes, and snippets.

@kavitshah8
Forked from samselikoff/future-proof.md
Last active August 29, 2015 14:14
Show Gist options
  • Save kavitshah8/3e20f86d5913cdbd6242 to your computer and use it in GitHub Desktop.
Save kavitshah8/3e20f86d5913cdbd6242 to your computer and use it in GitHub Desktop.

Components are taking center stage in Ember 2.0. Here are some things you can do today to make the transition as smooth as possible:

  • Use Ember CLI

  • In general, replace views + controllers with components

  • Only use controllers at the top-level for receiving data from the route, and use Ember.Controller instead of Ember.ArrayController or Ember.ObjectController

  • Fetch data in your route, and set it on attrs on your top-level controller:

    ```js   
    //controllers/index.js
    import Ember from 'ember';
    
    export default Ember.Controller.extend({
      attrs: {}
      
      // don't write any more code for this controller
    });
    
    //routes/index.js
    model: function() {
      return this.store.find('user');
    },
    
    setupController: function(controller, model) {
      controller.set('attrs.users', model);
    }
    ```
    
    then use `attrs.[model]` in your route's template:
    
    ```hbs
    //templates/index.js
    <h1>Users</h1>
    {{user-list users=attrs.users}}
    ```
    This controller/template pair will eventually become a routable component.
    
  • In your templates, stay away from things like ItemControllers and calls to render(). Use components instead.

  • Don't use views

  • Write your app in the "data down, actions up" paradigm

    • Not currently enforced, but you can still structure your app this way
    • Stay away from two-way bindings and mutability
  • Don't use each or with in the context-switching form. That is, use

     {{#each user in users}} {{user.firstName}} {{/each}}
    

    instead of

     {{#each users}} {{firstName}} {{/each}}
    
  • Use this.route instead of this.resource in Router.map

  • Use pods

Better apps

Follow these tips, and your apps will be ready for Ember 2.0. You'll also learn a lot about writing apps that are better structured and easier to understand!

Deprecations will be coming to help you move towards these newer practices. The goal is, if your app runs on the final version of 1.x with no deprecations, it should be able to run in 2.0.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment