I am working on emberjs framework since a month ago. There is alot of frameworks available but my management uses emberjs framework. So, I wanted to know how powerful is this.
This comes down to personal preference and philosophy, but I can try to give you a fairly objective overview of the differences and pros/cons. Note that this is mostly my opinion and may not be shared by others and I also don’t have much professional experience with the other major frameworks (Vue, React, etc).
First of all I would say most of Ember’s strengths are more qualitative than quantitative. Qualitative benefits are harder to talk about because they’re… well… harder to quantify, but IMO they’re underrated. You see the same thing when people debate (and I’m not trying to start anything here, just using it as an example) things like Android vs iPhone performance. Some people point to numbers like processor clock speed or number of cores etc to try to “prove” that one is better or faster, but in reality those things have very little to do with the real-world speed and performance. It also doesn’t take into account the differences in philosophy that drive them and the associated optimizations (e.g. Android is more flexible and can run on anything, iOS is integrated very closely with the hardware which allows for very intense optimization). It also depends on context and the whole experience of using the device. We are all humans after all, so a slight difference in processor speed isn’t going to change much if you hate the whole experience.
Anyway back to Ember…
Ember is “batteries included”
React/Vue and many other frameworks are hardly frameworks at all. They’re rendering libraries, and they have a whole ecosystem of other packages and libraries which are more “the framework” in sum. But this means you have to make many more decisions when starting a React/Vue project. Do you use webpack? What configuration do you use? Do you need a router, which one? Do you need a data layer? Which one? And so on… Many people love this because it allows you to do exactly what you want, and it’s very easy to get your bundle size down or use these libraries in a context where a full single page application isn’t justified.
Ember’s philosophy is different: include (most) everything you need out of the box. Ember by default has a build system, it has a router, it has a data layer. This is really nice because you can start an Ember app with one CLI command and you’re off to the races. The developer doesn’t have to make those decisions early on, or at all. It’s also really nice because it tends to (in coincidence with the other items below) make Ember projects consistent with each other. So you could jump into an app you’ve never seen before and know where to find things. The downside is that Ember is very heavy by default. It shines in full-fledged beast-mode apps where a router and data layer and lots of code and tests are required. It’s harder (at least in its current state, a lot of strides are being made to improve this) to trim Ember down or use it in a “small” context.
Convention over configuration
This one goes hand in hard with batteries included, Ember favors strong conventions (where things go, how a project should be organized, what test frameworks you should use, etc). React/Vue/etc tend to be highly configurable so you can customize things to your heart’s content.
The benefits and drawbacks are mostly the same here too. Ember frees you from having to reinvent a lot of wheels, and make a lot of decisions, and somewhat protects you from making bad ones that bite you down the road. The conventions it employs are based on community best practices so in theory they’re good guide-rails born out of a lot of shared experience and wisdom. That said, it is sometimes more difficult to configure and customize things and that can be frustrating. I think Ember maintains a fairly good balance between nudges and hard walls, but I also really like convention over configuration, others may chafe at this.
A rich addon ecosystem
Ember has a really powerful ecosystem of addons for extending functionality, integrating with 3rd party services, and exploring new patterns and ideas. Making an addon is fairly easy, and the community is historically pretty good about adopting and maintaining popular addons. Other frameworks have this too, and in some ways Ember may feel like a tiny ecosystem because (let’s face it) it’s not the most popular framework, but the addons tend to be well curated. And another thing I will call out which deserves attention is Ember Observer. EO is a wonderful tool for finding and evaluating addons and cool stuff like searching code. AFAIK it’s unique and I don’t think there is an analog in the other ecosystems.
Community
This one is similar and falls heavily into the qualitative category, but IMO the Ember community is the best. The framework is driven by community consensus and by a diverse core team, and not one company *cough*facebook*cough*
. Everyone I’ve run across is welcoming, helpful, and friendly and overall there’s a very positive vibe here. The conferences like EmberConf are always so fun, not because of the tech (well, that’s great too) but because of all the people who put in lots of time and attention to being inclusive and planning great events, and the people who love Ember and love building tools and code and relationships.
“Stability without stagnation”
This is another core tenant of Ember that I think is hard to articulate the value of, but that is tremendously powerful when taken in sum. Ember has evolved a great deal over the course of many javascript-years into a modern framework with cutting-edge tech (our reactivity model, for example, is really cool and very unique). This is possible because of the commitments to release stability, roadmap planning and “Editions”, and versioning guarantees like LTS and how major versions never add features. I’ve seen the tremendous benefits of this approach play out in a number of long-lived apps now and I don’t think it would be nearly as easy to transition apps (like the one I currently contribute to) from 2015-style code to 2021-style code without Ember’s commitment to stability (aka in other frameworks). The upgrade tooling is awesome and the upgrade process, while not always fun, is pretty smooth. This has allowed apps like ours to go from very old patterns and conventions to very modern in a short amount of time without breaking or causing huge developer headaches.
Anyway, there are probably a lot more things I could mention but those are the main reasons I love Ember and think that it’s pretty unique. These things in total make my life as a developer and a community member much easier and happier. So you can quibble over feature checklists and bundle specs all you want but at the end of the day I’m going to reach for the tools that get out of my way, make me productive, nudge me in the right direction, and make coding fun.
Another way to answer this question is to ask who else is using it. Apple and Microsoft are, along with a lot of smaller-but-still-worth-billions companies. Are they “cool”? Depends on your definition of cool. Is it a smart business decision? I’m going to go with “yes”.