Backbone.js, angularJS, ember.js, knockoutJS, dojo, yui, agilityjs, knockback.js, canjs, maria, cujo.js, dermis, montage, ext.js, Sammy.js, stapes, epitome, soma.js, duel, kendo ui, pure mvc, olives, plastron js, Dijon, rappid.js, funnyface.js, knockout+classbinding, deftjs+extjs, aria templates, enyo + backbonejs…………
There are 20+ mainstream frameworks which operate on, or alongside Jquery.
top 10 JS MVC Framework
In my opinion (based mostly on what I have read, discussed with clients / developers, and noticed the frameworks feature most commonly on CVs and jobspecs), the most popular are; Knockout, Backbone, Angular and Ember.
From what I have gathered, Knockout can be an excellent choice, especially if you are using it to improve upon an existing project, or if embarking on a small project. It is one of the most simple framework to get up and running with, and, its very compatible, integrating well with 3rd party libraries. Another positive factor I have picked up is that it works in a similar way to other frameworks, eg; Angular and Ember. This is a good thing because, if you can learn how, say, data binding works in Knockout, it is very similar in other frameworks. So, if you did need to use a more powerful framework, like Angular or Ember, you can make the transition fairly easily.
From what I now understand, one of the main challenges for Knockout users, is where they are using it for large projects. This is largely because, as the project gets bigger, Knockout’s view model can become increasingly complicated. This stems from the fact that the computed data isn’t organised in an optimal way, it isn’t separated well from persistable data and it can be difficult to keep track of.
Backbone can offer the much need MVC architecture to code whilst also offering more low level control. It also features Rest api data access and routing. For bigger projects, or if you want to limit the amount of boiler plate coding required, there are plugins available that will help, eg; marionette.js.
Angular is more complex, more difficult to learn than Knockout or Backbone. Angular and Ember, it looks to me, likes it is difficult to choose between them. They both look to do similar things, and both can rival native apps, and minimise code / time investment.
In reading up on the benefits of Angular, I have to be honest, I was confronted with a lot of technical specs, which I didn’t fully grasp. And so, I’m not going to try and report on them. From what I can surmise; it is a mature framework, which has achieved additional buy in because it is backed by Google. With Angular, there are some cool features which may set it apart (again depending on what you are trying to achieve) such as; integrated testing, custom HTML directives and it is also a lot easier to localize, so as to operate in certain areas of the app.
Ember is similar to Angular, in so far as it has strong punching power in its efforts to rival native apps, whilst also minimising the time and code investment needed to develop a web app.
It does appear though, that ember is a little harder to learn than say; Knockout and Backbone, and more time may be needed in order to learn it in the first place.
An interesting side point is that, certain developers may opt for Ember because it is similar to the Cocoa framework, which is very popular in objective c / ios development. This, again, makes it similar to that of developing native apps.
Developers will debate amongst themselves about the merits of using MVC frameworks and indeed, individual frameworks V’s one and another. I, personally, am certainly not in a knowledgeable enough position to chime in with an opinion on which is best, if such an out and out accolade exists.
What I have learned though, is that each framework brings to the table a set of it’s own, unique advantageous. I do think there is a place for each (and more to come) in web development.
As for which, if any, a certain developer should use? Well, it may be up to their Team Lead, Architect, Development Manager etc but… the choice should be made based on the needs of the project, but also on personal fit / preference of how developers like to work.