Ember as it is described by its creators is ambitious and opinionated. The goal of developing ember is simple; create a web framework that will enable web apps to rival native apps. To accomplish this, ember offers an end to end solution with all the features you need to create a single page web app functioning in unison. Ember also seeks to abstract as much as possible from the programmer in order to take care of all the small decisions that programmers would otherwise have to make. Therefore, it is also opinionated about how certain things should be done including how you name your objects, and how you organize your files. Ember is also ambitious in the sense that one should ideally use ember for “ambitious” projects where the goal is to produce an outstanding web app that will have the feel of a native app.

Features

-Sophisticated handlebars templates
-Views that respond to events
-Routing for representing the state of the model and view in your application and enabling deep linking to return to a particular state
-Models that are persistable with a REST api
-Controllers which produce computed properties from the model and pass it to a view
-API for performing operations on Enumerable objects

Strength of the Project and Community

Ember’s development is lead by Yehuda Katz and Tom Dale. Yehuda Katz is also on the JQuery and Ruby on Rails core teams. As a rough indicator of community size, there are currently 351 questions on stack overflow. 6,676 stars on GitHub. Ember just recently released its version 1.0, and before that was undergoing a good deal of changes. But despite the turbulent state of ember, several companies decided to take the plunge into using ember as their client-side framework. Ember data is still not in its version 1.0 state, and it does not yet ship together with ember.

Ease of Learning

The documentation for Ember, though not as impressive as that of Knockout or Angular, is quite comprehensive and easy to go through. There is a 30 minute video demonstration to get started, and then a complete development guide full of examples. Ember certainly has more concepts to understand than knockout and backbone, but getting started is relatively easy.

Compatibility and Extensibility

Since Ember uses handlebars for templating, it should be possible to plug-in any 3rd party plugin for extending templates. Out of the package, ember offers custom helpers for use in templates and the REST adapter for controlling how your application handles requests to the server. If you need to integrate ember with 3rd party libraries, you may need to set embers “EXTEND_PROTOTYPES” option to false. In this case you will have to manually tell ember to extend your objects by wrapping them in what ember calls convenience methods.

Testing and Debugging

Like the other javascript frameworks, developer tools like chrome web inspector work great for debugging ember (see this great debugging demonstration by Tom Dale). Ember also works with jasmine for unit testing. One useful tip for testing the routing in an app is to specify the “LOG_TRANSITIONS” option when you instantiate your app as follows.

App = Ember.Application.create({
  LOG_TRANSITIONS: true
});

Unlike Angular, Ember does not currently come with any built in testing tools.

Pros

-Sophisticated templating for managing more complex views
-Can quickly and easily convert a multi-page site into single page app using the routing feature
-Fast development, easy to read markup, smaller maintainable of code
-Full-featured
-Easy to get started

Cons

-Relatively new framework (v1.0 just released)
-Ember Data is not yet at v1.0 so it is separate
-Lacks custom HTML tags like directives in Angular
-Lacks extensive testing tools like Angular
-Doesn’t integrate easily with 3rd party libraries

Link to Part IV: Angular.js
Link to Conclusion