A Thorough Comparison of JavaScript Application Frameworks

By Nicholas Wetmore

Creating your company’s new website or app?  Thinking of trying a new front-end application framework but unsure of which one to pick?  Lots of developers have been in the same boat.  When this happens, we go hunting and reading through tons of blogs and tutorials to attempt to understand each framework before making a decision.  However, in our search we sometimes miss out on key information.  In order to make things easier, I have compiled all of the information that I gathered and all of my experience into this one post which I hope helps you to pick the technology which best suits your requirements.
There are tons of different JavaScript application frameworks out there for helping to build web applications, all of which have their strengths and weaknesses.  I’m going to cover 6 of the frameworks that I have heard the most about: Angular, Backbone, Ember, Flight, React, and Knockout.  Additionally, I’ve compiled a list of the features that I believe to be most important for a JavaScript application framework.  I’ll be using the following attributes to compare the Frameworks against each other:

  • Size and age of community
    • The size of the community can be inferred from the number of forks on Github and the number of tagged questions on Stack Overflow.
    • The size and age of the community will heavily impact the cost of ownership. The larger the community, the greater the chance that any issues you may run into will have already been solved.
  • Two-way data binding
    • The ability to bind data from your code to the rendered view and vice-versa.
    • There are performance concerns associated with two-way data binding. This means that a framework’s implementation must either be efficient or have optional one-way data binding which is efficient.
  • Routing
    • The ability to route users to the appropriate view.
  • Caching
    • The ability to cache data obtained from a service.
  • Developer onboarding time
    • The time it takes the average developer to begin adding value to a project at a junior capacity.
    • The time to learn any framework will depend upon a developer’s JavaScript, CSS, HTML, and general development experience.
  • Developer growth while implementing
    • The growth of general purpose development or software engineering skills that a developer will obtain by working with a given framework.
    • This is an important attribute since any given framework may not always be supported or relevant to your business. In such an event, it would be good to know that your team has grown and can take on new frameworks, or transition into working with other technologies.
  • Complete view and controller solution or just a subset
    • This is useful to know so that you can understand how much additional effort will be required to get your application or website to be fully functional.
  • Opinionated or flexible templating
    • Determines whether or not the Framework forces a given templating engine on you.
    • It is important for a Framework to be flexible with their templating engine if a developer is looking to retroactively outfit a website or app with a JavaScript Framework. If you are looking to build a new application from scratch this is not as much of an issue.
  • Server Side HTML Rendering (necessary for SEO)
    • This is necessary for SEO and also can help with performance.

For the rest of this article I will be presenting the information that I have found or experienced.  It will be up to you to determine which attributes of a given framework are important to your team and business.

I’ll begin with the most important aspect of a framework.  The following are graphs which demonstrate how large the communities are for each JavaScript Framework.  These numbers were obtained on June 3rd of 2017:

React and Angular are by far the most popular, and thus the most tested platforms.   For many architects and developers this all of the information that they need to come to a conclusion.  It shows that these two frameworks are very well used and liked, and additionally, their cost of ownership will be quite low since those frameworks will have few unsolved problems.

As an interesting comparison, I’ve also mapped the number of questions per Fork.

Take this with a grain of salt as this could mean any number of things.  In particular, a large ratio of questions per fork could be an indication of:

  • Low frequency of framework customizations.
  • Poor documentation or poor learning materials for the framework.
  • Difficult or confusing framework to implement.
  • A framework is worked on primarily by developers who have a more junior skill level.

On the contrary, having a low number of questions per fork ratio could be an indicator of:

  • Good documentation or learning materials for the framework.
  • Good community forums/alternative learning resources for the framework.
  • High frequency of framework customizations.
  • A framework is worked on primarily by developers who have a more senior skill level.

Finally, for all of the attributes mentioned above, I have compiled a table which can be used to easily compare each framework.  I will leave it up to you to decide which features are most important to you and your team.

That’s it; you should now know quite a bit about some of the most popular JavaScript frameworks around.  I hope that this article has helped you to choose which one you will be working with.

Nicholas Wetmore