Hacker News new | ask | show | jobs
by sync 4776 days ago
Ember is a lot harder to go from 0 to Todo App in an hour. There's a fairly steep learning curve, but once you've grokked the "Ember Way", building more complex apps is significantly easier.

With Angular, you can build a Todo App in no time, but building anything more complex requires you to understand e.g. Services, Directives, and Transclusion.

With Ember, you are just learning about Models, Views, & Controllers -- it doesn't get significantly more complex than that initial learning curve.

7 comments

Learning directives, services, and the scary sounding "transclusion" has not been an issue at all for my team and I who are using angular on a very large project and loving it. Directives are quite simple once you understand the basic principles. Transclusion when actually explained (http://www.egghead.io/video/cjrBTjMvruI) is a trivial and obvious concept. I understand the confusion one may have around services/factories/providers because they are all very similar and in some ways little more than syntactic sugar for a single API, but once their differences are sorted out as in this blog post (http://iffycan.blogspot.com/2013/05/angular-service-or-facto...) they too become very natural.
For me it wasn't learning the terms, I didn't have an issue there. The problem was how limited Angular was in comparison to Ember, particularly the idea of directives. I actually spent a large amount of time on freenode discussing in the Angular chatroom how I might construct a directive to replicate a common jQuery plugin like Zurb's Joyride. In short it couldn't be done in anyway that seemed remotely non-hackish.

Ember has jQuery included, so using existing plugins is generally easy or at least possible. Beyond that, it has a far more powerful router (try doing deep routing with Angular. Angular UI's router may be changing this, but you would still have to include outside code to get the power of the standard Ember router) and in the future much more powerful REST support with Ember-Data (currently volatile, but still very powerful).

I started building a large application with Angular using FuelPHP for the REST server. Angular simply didn't have the power to do the things I needed it to at that time. Hopefully that's changing, since it seems to be the dominant framework these days.

I'd say that once you've mastered Angular concepts like services and factories, dependency injection, etc., it's far easier to build complex applications in it than in Ember. That's because the abstractions Angular introduces are focused around writing decoupled and reusable code.

If you want to build an app in an hour, I'd suggest knockout instead of either ember or angular.

This is the same experience I had. I built a simple Angular app quickly but I soon realized I didn't understand how to go from the sample code on their website to doing more complicated things as the structure of the framework is very different from what I am accustomed to.
I haven't built anything in Angular yet, but I can vouch for the Ember side of this. Getting started was pretty painful, but I now feel remarkably productive even in more complicated scenarios.
This was my experience exactly. I started a project with Angular and got the basics set up without difficulty. When it came to integrating Google Maps, it was a nightmare and I switched to Ember. It took me a little while to figure out "The Ember Way" but the integration is very clean and understandable now.
Very high learning curve but it levels out. It doesn't get more complex unless you make it. It's hard to transition to a fully async environment if you're coming from the server side.
from my limited experience with Ember, it appears that it hosts entire application from a single base url, and overrides forward/back buttons so that the page doesn't reload in order to keep state. instead it uses query string view paths and tokens to navigate around right? Does Angular support anything like this?
What you're describing is pretty much fundamentally a "single page web app". This is a pretty common pattern for frontend apps.