The environment setup
We will be using a simple Node.js server to host our application because it will run on any operating system. If you haven't done so, install Node.js by following the instructions at http://nodejs.org/download.
We will be using Git to manage the code for each chapter. If you haven't done so, install Git by following the instructions at http://git-scm.com/book/en/Getting-Started-Installing-Git. The code for this book can be downloaded from http://www.packtpub.com. All the code needed to start each chapter can be found in a branch named cp[chapter#]-[sample]
. For example, the first sample we will look at is going to be in the cp1-computeds
branch.
To begin, clone the repository from https://github.com/tyrsius/MasteringKnockout. You can either use the provided download links or run the following command:
git clone git@github.com:tyrsius/MasteringKnockout
Then, check out the first sample using:
git checkout cp1
All the examples follow the same pattern. At the root is a server.js
file that contains a boilerplate Node.js server. Inside the client directory is all the code for the application. To run the application, run this from the command line:
node server.js
Keep the command-line window open else the server will stop running. Then, open your web browser and navigate to http://localhost:3000
. If you've set up your environment correctly, you should be looking at the empty Contacts List
application, as shown in the following screenshot:
The cp1
branch contains a skeleton with some blank pages. Until we get to the Contacts application, most of the samples will not have the Contacts or Settings pages; they will just present the code on the home page.
Looking at the samples
Samples of running code are provided throughout the book. They are in branches in the Git repository. You can look at them by checking out the branch, using the following command:
git checkout [BranchName]
Since the repository is a functional app, most of the code is not relevant to the samples. The client
directory contains the index.html
and shell.html
pages, as well as the app
, content
, and lib
directories. The app
directory is where our JavaScript is located. The content
directory contains the included CSS and lib
contains third-party code (Knockout, jQuery, and Twitter Bootstrap).
The included Node server has a very simple view composition that places the contents of a page in the {{ body }}
section of the shell. If you have worked with any server-side MVC frameworks, such as Ruby on Rails or ASP.NET MVC, you will be familiar with this. The mechanism is not related to Knockout, but it will help us keep our code separated as we add files. The shell is in the shell.html
file. You can take a look at it, but it's not directly related to the samples. The HTML for samples is in the client/index.html
file. The JavaScript for samples is in the client/app/sample.js
file.
JavaScript's compatibility
Throughout this book, we will be using code that relies on ECMAScript 5 features, which are supported on all modern browsers. I encourage you to run these examples using a compatible browser. If you cannot, or if you are interested in running them in an older environment, you can use a polyfill for them. A polyfill is a JavaScript library that adds standard features to old environments to allow them to run modern code. For the ECMAScript 5 functions, I recommend Sugar.js. For the CSS3 media query support, I recommend Respond.js.