I’ve been wanting to contribute back to Ember for some time. I dive in and try to answer questions here and there, I’ve been cleaning up a few nice libraries with the intention of pushing them out to the community, but really want I’d like to do is create a revamped “getting started” guide that explains many of the high level concepts Ember uses: stuff that experienced devs take for granted.
Some thoughts on that.
Most of the confusion I see comes from devs for whom this is either their first programming experience ever, or their first front-end framework. Even devs with experience in a solid backend MVC framework seem to get confused easily by Ember.
I feel some of this confusion is because Ember brings a lot to the table as a framework alone, and these devs are stepping into a framework encouraging an entire unfamiliar ecosystem of build tools and task runners. Getting up and running is overwhelming if all of these tools are as unfamiliar to you as the framework itself.
Imagine the self doubt: is the workflow broken? Or is it something in the app?
Get past the setup confusion and the initial “hello world”, and Ember assumes that devs know a lot of lingo and concepts that they likely don’t.
Ember makes the assumption you know what MVC is, and can understand why Ember’s MVC consists of model
view
template
controller
and route
.
Ember assumes you know what a factory
is, what an initializer
is for, and what components
are for. inheritance
is awesome, and usually clear, but dependency injection
is handled for you and prevalent all over but not mentioned often or explained.
There’s also consistent talk of Ember’s resolver
, a magic black box that consistently seems confuse new Devs who don’t get how a controller is matched to a route and so on.
Not to mention the seeming inconsistencies in naming (largely cleaned up by ember-cli, if you are prepared to add that to the new tech stack being tackled) between
App.PostsNewRoute
this.resource('posts', function() { this.route('new'); });
- the template
posts/new
-
this.transitionTo('posts.new')
.
Or when to use camelCase
vs CamelCase
and so on.
Ember Data tends to assume you know what an adapter
and serializer
are for and how they are used. The best way to learn how to implement one remains reading the source of the default RESTAdapter and RESTSerializer.
In short, there’s a lot that Ember offers that isn’t well document or explained for anyone, but for beginners even the explanations that exist are too abstract or unrelatable, and the ones that are missing make the way Ember works seem like voodoo.