Ember is one of the most controversial frontend development tools out there. While some claim that Ember already bit the dust, its evangelists claim that it’s one of the best frameworks to work with. So where do things really stand?
Ember indeed has quite a few major flaws but it also has a number of significant advantages that make developers select Ember as a framework of choice. In this article, we’ll review what makes Ember a good fit for your project and what drags it down in competition with its rivals.
Ember.js: a brief history and the current state
Ember.js did not just pop out of nowhere - it developed from the SproutCore 2.0 framework. SproutCore 2.0, in turn, was an attempt to improve the initial SproutCore framework that was created in 2007.
When SproutCore 1.0 was created, it was not sufficient enough for Web 2.0 so the development team opted for a fresh start and began working on the SproutCore 2.0. The project was led by Yehuda Katz and Tom Dale and the original SproutCore creator, Charles Jolley, was responsible for the core Run Loop and key-value observer code.
Strobe, the company that was formed by Jolley, did not deliver the expected results and had to be acquired by Facebook. Dale and Katz, however, decided to form their own company called Tilde and its main focus was further development of SproutCore 2.0 which was soon renamed Ember.js.
The official launch of Ember.js happened in 2011. The main difference between SproutCore and Ember.js is that the latter focuses on the HTML/CSS use cases and data binding.
Today, Ember.js is not very popular, especially compared to other frameworks. According to the Web Technology Surveys, it is used by less than 0.1% of all websites - React, for example, scores 0.8%. However, Ember.js remains in demand and is used by such companies as Twitch, Netflix, Accenture, and LinkedIn. The reason for that is that Ember is capable of sufficient performance - but the number of issues that come along with it may be a little too much for companies. Let’s have a more detailed look at it.
Ember.js: technology type
The main principle that Ember follows is Convention over Configuration. It is a development approach that implies development according to typical programming conventions, meaning the number of decisions that a developer has to make is decreased. This approach decreases the amount of code to write and contributes to better productivity.
There are five key concepts that Ember is centered around:
Routes: each URL is assigned with a route object that controls what is displayed to a user;
Models: every route, in turn, has an associated model which has the data about the current state of the app;
Components: custom HTML tags;
Templates: help create the app’s HTML and are written in HTMLBars;
Services: singleton objects for holding long-lived data.
One more thing that Ember focuses on stability without stagnation. This concept means that while the framework is evolving, the changes applied will not break the apps running on older Ember versions (nobody is “left behind”). While this approach is beneficial for the app owners, some developers feel like it contributes to Ember’s stagnation, not its development.
Now let’s quickly have a look at the key Ember features:
The use of HTMLBars for a new binding syntax;
Glimmer rendering engine;
The CLI utility for integration of Ember patterns into the dev process;
Support for data binding;
Ember Inspector tool for debugging;
Routes for URL management.
Ember CLI (Command Line Interface) is one of the most talked-about things among Ember developers. This CLI is an official way to build, test, and serve the files that an Ember app is made of. With the help of Ember CLI, developers can easily generate an entire app and perform multiple functions within it.
The use of Ember.js: most common cases
We already stated that Ember is quite a controversial framework so its use cases are rather controversial as well. Below are the two most popular - let’s have a look.
Large and complex web apps
Some developers believe that Ember.js may not be very suitable for small and medium-sized teams since it has performance issues, a steep learning curve, and quite a lot of missing features. Hence, the most common use case for Ember is the development of large web applications where developers can dedicate a certain amount of time to debugging and fixes.
Ember has good routing solutions, a feature-rich data access library, quite fast rendering, a lot of built-in useful features, and built-in best practices. As well, Ember does not offer much flexibility compared to other frameworks but it may actually be an advantage if your team needs clear rules to be followed.
Another use case for Ember.js is (surprisingly) full-stack development. The reason for that is simple: due to Ember’s complexity, it will be much more efficient for one person to handle it. Since a developer knows Ember inside out and understands its principles of work, it will be easier for this person to create the backend part correspondingly.
Ember.js Pros and Cons
Even though Ember.js has several flaws, it’s still being used by companies around the world. Let’s see what makes Ember the first pick among developers and what makes them question the use of Ember in favor of other tools.
Ember.js first appeared about 10 years ago and continues growing and developing which is an indicator of its relevance. If there is good coherence between developing the frontend and the backend part of the application, the overall development time can be significantly lower with Ember than with other frameworks. Ember will also take care of processing queries and replies but you will have to define the models. In my opinion, Ember can be a really good option for a full-stack developer. However, due to the weak community and peculiarities of this framework, chances are high you’ll face many strange errors that you will have to fix yourself, without addressing Stack Overflow and by reading documentation and using built-in debugging methods.
Mikhail, Frontend Engineer
Ember.js is a challenging framework that has many issues to pay attention to. At the same time, if you set up your development process correctly, it will reward you with rich functionality, stable architecture, and short development time. We don’t use Ember much at SoftTeco but there are a few projects where we deploy Ember and for now, we’ve been satisfied with this framework. Hence, you can also try it and see whether it will be a good fit for your project though you will need to spend quite a while getting acquainted with it.
With this article, we wrap up our frontend series and switch to cross-platform development with React Native being the first tool on the agenda. Sign up for our newsletter to get updates on our blog and leave a comment if you have any questions or if you want to share your opinion with us.