Angular.js is the first framework that officially calls itslef a framework as opposed to knockout and backbone which actually refer to themselves as libraries. Angular claims to be great even for small local applications, but it is probably better suited as a foundation to base a whole new project on. Angular seeks to combine a complete toolbox for building dynamic single page web apps. It is relatively fast to produce applications, and requires less boilerplate code in comparison to backbone.js. As co-creator, Brad Green claims that at google, angular was used to write an application in three weeks that previously took 6 months, and since then many have had similar experiences.

Features

-Data binding (Uses “Dirty Checking” instead of Change Listeners. See this post on Stack Overflow.)
-Dependency injection
-DOM-based templating
-Routing and Deep-Linking
-Model-View-“Whatever” architecture
-Built it form validation
-Data persistence methods that work with RESTful APIs
-Web Components or “Directives” (Define your own HTML syntax)

Testing and Debugging

This is one area where Angular is outstanding. Angular comes packaged with built in testing tools, and there is a list of other tools available. Batarang is an extension for chrome that monitors your app’s model and measures your app’s performance. As we find by the rest of the frameworks, jasmine works, but there is also a plugin testacular (spectacular test runner) which allows you to run jasmine test on multiple browsers. Yet another extension available is Angular Scenario Runner which automates testing by simulating user interactions. Finally, since Angular uses dependency injection, it makes it ideal for unit testing.

Strength of the Project and Community

Angular was initially developed internally by Google, and now that it has been open sourced, Google continues to support its development. Angular has 8,523 Stars on GitHub, and 4,239 questions on stack overflow.

Ease of Learning

Angular is certainly more complex than knockout and backbone. It surely requires a bigger time investment. With that said, we feel that getting started with Angular is rather easy especially if you are familiar with knockout since the data-binding features are used in a very similar way. Angular also has comprehensive and well organized tutorials with plenty of examples on there website.

Compatibility and Extensibility

As far as compatibility goes, Angular can function in a particular part of your application so it does not get in the way of other frameworks you may be using. Angular is more abstract than knockout and backbone, it makes more decisions for you behind the scenes so that you can write less code, but this inevitably makes it harder to customize on a lower level. On a higher level, Angular gives the developer an API with extensive options.

Pros

-Uses primitive javascript types instead of function wrappers (“dirty checking”)
-Loaded with functionality
-Easy to get started
-Fast development and smaller amounts of boiler-plate code compared to backbone
-Makes testing easy and offers many testing tools
-Working with standards bodies to make browsers operate in the same way as angular

Cons

-Takes longer to learn than knockout and backbone
-Has not been proven in as many mainstream projects compared to backbone.js

Link to Part III