Ember.js is “a framework for building ambitious web applications.” In more specific terms, it is a collection of libraries, abstractions, and conventions for dealing with the challenges of building single page web applications.
Out of the box, Ember provides:
Ember is open source and community-driven. One of its guiding principles is that the abstractions it provides should be extracted from real-world applications, rather than being based in theory. In the words of co-creator Tom Dale:
Yehuda and I have been extremely aggressive about getting real users of Ember involved in the design and maintenance of the framework. This keeps us honest and makes sure features we add are not things we think are neat but are driven by real problems developers are hitting today.
— Tom Dale, answering on Quora, 21 Nov 2012
SproutCore’s creator, Charles Jolley, worked on the framework at Apple until 2010, when he left to form Strobe Inc. He was joined by, amongst others, fellow Apple engineer Tom Dale and prolific open source contributor Yehuda Katz, known for his work on Ruby on Rails and jQuery. As SproutCore’s development progressed, the team’s goals diverged. SproutCore had powerful bindings, observers and well-designed MVC underpinnings, but it also focused heavily on an interface design that mimicked desktop applications and lacked an intuitive templating system. In 2011, a complete rewrite was announced under the name "Project Amber." The plan was to take the best of SproutCore, marry it with declarative auto-updating templates using Yehuda’s Handlebars library, and put HTML and CSS front and center as the presentation layer.
When I met SproutCore, I realized that it provided a more powerful observer library than anything I was considering at the time for the data-binding aspect of Handlebars, and that SproutCore’s biggest weakness was the lack of a good templating solution in its view layer. I also rapidly became convinced that bindings and computed properties were a significantly better abstraction, and allowed for hiding much more complexity, than manually binding observers.
After some months of retooling SproutCore with Tom Dale to take advantage of an auto-updating templating solution that fit cleanly into SproutCore’s binding model, we reached a crossroads. SproutCore itself was built from the ground up to provide a desktop-like experience on desktop browsers, and our ultimate plan had started to diverge from the widget-centric focus of many existing users of SproutCore. After a lot of soul-searching, we decided to start from scratch with SproutCore 2.0, taking with us the best, core ideas of SproutCore, but leaving the large, somewhat sprawling codebase behind.
— Yehuda Katz, Announcing Amber.js, December 2011
The final piece to Ember’s origin story is the formation of Tilde. In August 2011, as work was getting underway on Project Amber, Strobe was acquired by Facebook. Yehuda Katz, Tom Dale, Leah Silber and Carl Lerche, determined not to let their team be scattered to the wind, struck out on their own to found Tilde Inc. This small band of prolific open-source developers, eschewed VC-funding in favor of bootstrapping their new company. Tilde now splits its formidable powers between consulting, open-source and working on their own products, such as the recently announced Skylight, itself an Ember app.
In its home independent of venture capital and giant corporations, Ember has become a true community project. At this time, the core team is nine strong, and the main repository has seen contributions from over 275 developers around the globe.
Ember is by no means the only project seeking to advance application development on the web. Alongside the aforementioned Backbone, other frameworks include Angular, Knockout, Batman and Spine, to name but a few. While these frameworks and their communities share common goals, their approaches and philosophies differ, and all have their advocates and detractors. There are no shortage of flame wars… err, comparisons… between the frameworks, so rather than compare them all side-by-side, let's focus on Ember's strengths:
Git is the version control system of choice for Ember and most Ember projects, and they are often hosted on Github. If you haven't already installed Git on your computer, you will want to do so now.
While Ember applications run in the browser, they usually load and save data from a web server via HTTP. Ember can connect to any website with an API for accessing data, so even old legacy platforms at work can serve as the backend for a new Ember application.
When starting a new server-side application intended to provide an API to Ember, choosing a modern framework with good support for RESTful JSON APIs is highly recommended. For further discussion of APIs and accessing data-layers from Ember, see the models chapter of this book.
Convoy for Node.js. We call these asset management tools build pipelines.
For long-lived projects, providing Ember applications a stand-alone codebase is a good choice. This formalizes the separation of back-end concerns and font-end concerns, and results in a more flexible codebase over time. The problems of asset management remain though, and there are several build pipeline tools that address these issues without involving a web framework. Many are based on Node.js and the Grunt task engine, including Ember-App-Kit and Yeoman. Others exist with differing approaches, among them Brunch, rake-pipeline, ember-runner and Broccoli.
In the following chapters we’ll walk through Ember’s overarching design, then dive into its constituent parts. In part two, we’ll put these tools to work creating a fully-fledged application.
There has been error in communication with Booktype server. Not sure right now where is the problem.
You should refresh this page.