Book Review - KnockoutJS Starter

02 Jan 2013

KnockoutJS is one of many recent libraries for development of structured applications in JavaScript. It employs the MVVM pattern, as opposed to perhaps the more well known MVC pattern. It also employs a declarative form of data binding via the data-bind attribute on your HTML elements.

KnockoutJS Starter from Packt Publishing, written by Eric Barnard, is short at only 50 pages and proposes to:

The beginning half, building up a basic demonstration app, does a reasonable job. There are some distractions in terms of the author describing his preferences for WebMatrix and HTML5Boilerplate, but other than that I felt comfortable that I had a basic understanding of what a KnockoutJS application was about. It's split between the very basics (such as downloading KnockoutJS) and more advanced (such as lots of examples of the databinding syntax).

At this point I'll say that I don't really like the KnockoutJS databinding technique much (Why I don't like KnockoutJS by Aaron Powell for more), but I understand the separation of concerns it's supposed to achieve. I just think it looks kind of messy.

So with our introduction to KnockoutJS out of the way, including master-detail views and a demonstration of things like observable arrays, we then move on to the section titled "Top Features You Need To Know About". This one didn't sit quite right with me, it begins with a look at the implementations of the various KnockoutJS observables, which is interesting but not what I'd expect to see in a starters book. Some of the other parts of this section are just fine, like introducing some of the utility functions that come with KnockoutJS.

The final few pages link to some excellent further KnockoutJS resources, so the reader is left with a place to go after this book.

Overall I feel like I gained a good understanding from KnockoutJS Starter, and while some small parts weren't exactly of immediate use to me, if I planned on becoming more heavily envolved with the library then they'd set me up well. Good work Eric & team!

Feedback or questions on this post? Create an issue on GitHub.