Disclaimer: I received a free copy of this work under the O’Reilly Blogger Review Program.
Not long ago, I met a developer who told me he’d taken up a hobby: attending AngularJS talks at conferences. Note that he did not do this out of some deep love for Angular. No, he did it out of sheer amazement that he, a PhD-holding professional developer still could not, after so many attempts, get his head around this beast that the web front-end world was so in love with.
And now I get it.
To someone like me without much web coding experience (a little Node, a little Express, some Mongo and JS — the MEAN stack minus the A), there’s even more of a hill to climb than for my developer acquaintance. Being less familiar, it’s even less reasonable I’d immediately grok Angular. But there’s another problem here, one we need to face up front: Angular is magic. Both in a good way — look at all the free two-way data binding! — and in a bad one: it’s basically a black box with, to me, completely unintuitive naming conventions and a not-quite unified conceptual structure.
All of which is to say that my failure to grasp Angular by the end of this book is certainly not the fault of the authors. (Except insofar as they had a hand in the actual library.) In fact, I’d probably be a lot worse off without them. All in all, Green and Seshadri have produce a credibly clear, detailed exposition of Angular, complete with invaluable information about caveats, deprecations and best practices. Had I actually done the work of typing in and following the provided code, I’d probably be much further along the path to Angular mastery, and certainly a lot less lost.
Why do I say this? For starters, both authors spend a lot of time trying to impart the Angular way of thinking. They build and refine variants on a single project throughout the book, so your confidence and competence should build as you progress through the chapters. When a feature has been (or is about to be) deprecated, they warn you not to use it. They have a strong focus on testing and Angular’s approach to it. They walk you through the code and potential variants. Pretty careful, solid stuff.
Unfortunately, as I said, Angular’s own obscurantism is not doing them any favors. Green and Seshadri try hard, for instance, to explain why you need three different types of services and how to set each up, but the rationale behind that design choice remains unclear to me. Same for various other hoops involved in plugging Angular’s many black boxes — controllers, services, directives — into each other. In fact, I found myself wishing that the discussion of Angular’s digest loop, one of its key internals, had appeared much earlier in the book, since it gave me a vastly improved idea about what might be going on under the hood and what sorts of advanced features might be possible.
Still, for the 80% of Angular that covers all the most common use cases, this book should serve as a better than average introduction. Four out of five stars.