I’ve been using Ember.js on and off on a variety of projects for nearly two years now. Ember has proven to be quite unique. Even after getting very, very familiar with it, I still quite like it. As with all things I’ve found in programming, it has caused me pain at times, but far less than expected based on how much I’ve used it.
Here are some of the things that keep me coming back to Ember for new projects.
1. Data Binding
Having worked with more-traditional GUI frameworks like Swing, SWT, and WxWidgets, the ability to bind an object into a view and have updates just work is still a revelatory experience. This is certainly not an ember-exclusive feature, but unlike my experiences with WPF, I haven’t found enough pain points to make me wish I could go back to a traditional system.
2. Computed Properties
The ability to have intelligently-cached properties that will update automatically when underlying dependencies is likewise not exclusive to Ember. The Ember implementation has likewise surpassed my expectations. Apart from the array/reduceComputed system, which has some known issues, the CP system has been pretty bulletproof.
3. HTMLBars/Handlebars
The Handlebars/Mustache templating syntax is still my favorite to use. With the advent of recent versions of ember and HTMLBars, things are only getting better. There’s no longer any need for special bind-attr
syntax when you want to programmatically set the value of an HTML attribute.
4. The Ecosystem
The community around Ember.js has grown significantly since I started using it. With that have come a great number of useful addons that you can drop into your project for additional functionality. I’ve generally been very impressed with the average quality of addon code I’ve found out in the wild.
5. The Testing Story
When I started out with Ember, it’s testing story was really bad. It was exceptionally difficult to test the various bits of your app thoroughly. This has changed very much for the better. Ember is now really easy to test. Both the unit testing and acceptance testing infrastructure are top-notch. You don’t even have to use QUnit any more.
6. Ember-CLI
I’ve used many build tools during my career and have developed an intense dislike for the vast majority of them. Ember-CLI, however, just seems to work. It is well designed for a number of use cases, and the maintainers seem exceptionally receptive to changes that would be generally helpful.
Ember is certainly not without its issues. Ember Data is still a wee bit of a mess, and there are some serious performance problems. A solution, however, would appear to be on the way in the form of Glimmer, a React-inspired rendering engine that should massively speed up rerenders. Even without the improvements coming down the pipe, I think the gains in productivity and clean application structure are more than a fair trade.
At Atomic, we’ve developed quite a lot of experience with Ember over the years. I think it’s safe to say we really like it as a platform. If there’s a crucial Ember benefit you think I missed, feel free to drop me a note in the comments!