Welcome to the Javascript Framework revolution.  Since the release of JQuery in 2006, client-side javascript has entered a renaissance, and many developers have decided to shift much of the functionality of there applications to the client side, while using the server primarily to send and recieve data.  Shifting functionality to the client side enables the potential for a much more powerful and responsive UI, which has always been an advantage of native apps. But with JQuery alone it still takes a great deal of effort to create a web app with the unparalled feel of a native app. Now everyone is wondering what will be the next paradigm in client-side development, and more importantly which framework they should choose for their next application. There are over 20 mainstream frameworks that operate on top (or next to) JQuery for developers to choose from (see Todo MVC Project). No to mention several smaller more focused libraries.

This article will be the first in a series of posts that will hopefully shed light one several major frameworks in order to give you a picture of the advantages and disadvantages of each one, and help you to choose which one is right for your next project.  But before we talk about any specific frameworks, we will first outline some of the major features that these types of frameworks offer, and then we will outline our requirements in evaluating different frameworks.

Overview

In the words of Knockout.js creator Steve Sanderson “All the technologies follow from the view that serious JavaScript applications require proper data models and ability to do client-side rendering, not just server rendering plus some Ajax and jQuery code.” All the frameworks that we will discuss implement their data model as part of an MVC type architecture or some variation of MVC, and most have some sort of built in templating. A data model enables features like dependency tracking, and data-binding as well as the idea of “state” within a web app. Data models also make it much easier to sync data with the server. Templating enables applications to programmatically render views that are modular and reusable. As we evaluate each framework, we will look at how it implements these features and what additional features it offers that come as a result of the data model and templating.

Requirements

  1. Features

  2. What are the main features the framework offers? And how do they meet the needs of the project?

  3. Strength of the Project and Community

  4. Who are the core developers? How many people are active in the community? How well documented is the framework?

  5. Ease of Learning

  6. How easy is the framework for developers to learn and use?

  7. Compatibility and Extensibility

  8. Is the framework compatible with 3rd party libraries? Is it easily extensible?

  9. Testing and Debugging?

  10. Are there any tools for testing and debugging? What are common debuging methods?

  11. Pros and Cons

Link to Part II