For those writing substantial client-side JS apps (rather than sprinkling jQuery here and there), a client-side MVC framework is definitely the way to go.<p>EmberJS has however gotten a lot of flack recently regarding its docs, learning curve, and lack of API stability.<p>The following hn link compares Angular, CanJS, Backbone and Ember: <a href="https://news.ycombinator.com/item?id=5563223" rel="nofollow">https://news.ycombinator.com/item?id=5563223</a> and would be a useful resource when picking a framework.<p>We're using Backbone to write a client-side widget / look and feel library, with a bunch of Models and Views out of the box to help application developers write rich web apps. Backbone has worked out great so far, but we've had to take decisions on a fair amount of things and put the groundwork in for things like dust templates, nested views, etc.<p>Things like Angular, CanJS, Ember, make these decisions for you and can definitely save time, if you're happy with their way of doing things.<p>That said, we don't have View Bindings / Two-way bindings built in, we have to use Backbone Event's <i>listenTo</i> manually. It's worked ok for us so far, especially when you have multiple views on the same model that need to do different things when the model changes.