Author: Brad Green & Shyam Seshadri
Reviewer: Ian Elliot
AngularJS is a hot topic and rapidly becoming the must-use client side MVC library, but the documentation is terrible. So a book on the topic written by two Google programmers working on the project sounds like a great idea.
And it very nearly is. This is a good book spoiled by lots of silly mistakes. However, if your threshold for mistakes is low then it is still worth considering as a way of getting started with and even getting inside AngularJS. The best part of the book is probably the beginning in that it manages to talk you into AngularJS by explaining the why and then the how. Later on the book has a tendency to degenerate into longer listings, slightly off topic subjects and incomplete explanations which when coupled with the typos makes it much more difficult to extract any goodness.
There is an errata list and there are corrected examples that you can download but it doesn't make the book an easy read.
Chapter 1 forms a very general introduction to AngularJS. It explains the basic idea of MVC with just enough detail for you to see how it relates to AngularJS. It explains databinding, dependency injection and directives which are key features. Notice that this is a very conversational approach. If you prefer a more definition based approach as you might find in a manual re-write this isn't going to please you. It leaves out a lot of detail - mostly obvious or irrelevant detail - and you are going to have to find out about it from the reference documenation.
The next chapter continues in the same way explaining things in a little more depth with a look at controllers, two way databinding, lists, CSS, expressions, scopes, $watch, modules, routes, directives and validating user input. A long chapter? Yes and it more or less completes what the book has to say about using AngularJS. From here the book is mostly about the bigger picture of working with AngularJS.
Chapter 3 is about using various tools to control an AngularJS project i.e. a fairly big project. If you are learning AngularJS then your first concern will be with small projects so perhaps this is a bit premature. The tools discussed include the excellent JetBrains Webstorm IDE, but not my favourite NetBeans. It also covers Yeoman, Karma and Batarag. It makes you wonder if open source projects are in some sort of competition to use the silliest name possible. How useful you find this chapter will depend on what size of project you are considering. Chapter 4 continues with a consideration of testing and overall architecture.
Chapter 5 moves back to consider something more basic - communicating with servers. It considers mostly the HTTP and strict REST implementations. Chapter 6 is about the Directives API and creating your own. Chapter 7 is about general stuff, location, cookies and so on; and the final chapter is a set of recipies and tips.
If you are already familiar with AngularJS then you might find the later chapters useful, but only if you find the tools described are what you want to use. Even if they ar,e be prepared to work hard at some of the sections which are not as clear as the first two chapters.
So is the book recommended?
Put simply there are too many problems with it to be able to recommend it unconditionally. There is also the problem that most of the goodness is in the first two chapters which, at 46 pages, don't even make up a third of the book. So if you are desperately seeking an introduction of AngularJS then buy a copy, but you have been warned.