Recently there’s been a lot of discussion around different JavaScript frameworks such as Angular, Ember, Backbone with Marionette. After years of JS spaghetti code and memory leaks, these frameworks solve many pain points previously felt when building JavaScript applications. There are now great development tools that help to quickly get started creating responsive, single page applications with a maintainable codebase. Having rolled out a number of Backbone apps, I’ve been interested to see how well Ember works in comparison. Here we’re going to spend a moment with ember.js and Yeoman.

Before we start, you must have node installed and configured correctly. If not, install it and then come back.

Yeoman

Yeoman is an intelligent collection of tools that make developing JavaScript applications pain free (or at least less painful.) This is how we will be quickly scaffolding our application, installing its dependencies and running a development server to view the application.

In addition to the things we’ll be covering here, Yeoman will build/minify your app for production and run its test suite. See yeoman.io for more information.

Installing Yeoman

To install Yeoman and the generators for an Ember application, simply run:

npm install -g yo npm install -g generator-ember

This will install the current version of Yeoman (rc1) and the Ember generators (0.5.9). Great! Now we’re ready to get going.

Creating The Ember.js App

Create a new directory for the application and switch into it:

mkdir ember-demo cd ember-demo

Running yo ember from the command line will give you a menu similar to this:

Say yes to the following options:

Would you like to include Twitter Bootstrap for Sass?

Following this, Yeoman will scaffold out an Ember app and automatically install its required dependencies by running bower install and npm install .

Once this is done, all you need to do is run

grunt server

This will open a web browser with your app which should look something like this:

with the following info available in your browser’s console:

So, great, we’re now running a very simple Ember app. Wasn’t that easy?

Troubleshooting

If you’re having any trouble with this tutorial, make sure you have the latest versions of Yeoman and generator-ember installed - it’s simple to update them: npm update -g yo generator-ember

The Results

This may look simple, but there are a few interesting things going on.

The page is generated dynamically by Ember - have a look in app/index.html - you’ll see that there’s no markup, just a bunch of required scripts. Here’s where the magic is happening.

If you look in app/templates , you’ll see application.hbs and index.hbs . Two handlebar template files that are telling Ember what to render. The three colours are coming from data stored in scripts/app.js .

app.js

You can see that the colors printed on the index page are defined here in the array. Add another item to the array, and the page will list that.

App . IndexRoute = Ember . Route . extend ( { model : function ( ) { return [ "red" , "yellow" , "blue" ] ; } } ) ;

index.hbs

Here’s the handlebar template that is used to render those items. Very simple, but a good illustration of how you can use handlebars to loop through an array.

< div class = " hero-unit " > < ul > {{#each item in model}} < li > {{item}} </ li > {{/each}} </ ul > </ div >

Conclusion

Using Yeoman, Bower, and Grunt is a great way to quickly scaffold the barebones for a new JavaScript program. In less than 5 minutes, you can go from nothing, to a basic framework to start building out your application.

Updated July 16, 2013 updated instructions for generator-ember 0.5.2

Updated July 19, 2013 updated instructions and screenshots for generator-ember 0.5.7

Updated July 27, 2013 generator-ember 0.5.9 and yeoman 1.0.0-rc.1.3