I have recently started playing around with Node and Express to see what all the fuss is about. It’s actually very cool and easy to get a project started.
Before we start an express project, we need to install Node. Installing node is extremely straight forward. Just go to nodejs.org. Click on the big
Install button and it will serve the binary installer appropriate for your platform. Go ahead and install it as you would any other application.
The installer will add both
npm commands to your
PATH so you should be able to run them from the terminal. To make sure everything is in working order lets open up a terminal and type in the following:
$ node --version v0.12.0 <-- should output a version number
If you got the above, then node is installed and added to the path correctly. Now lets make sure
npm is working:
$ npm -version 2.5.1 <-- again, it should output a version number
Express is a web framework for node, similar to how Sinatra is to Ruby. Installing it is really easy. Go back to the terminal and type in the following:
$ npm install express --save
It should output some text and say it was successful. Let’s break down this command:
npm install <-- tell npm we want to install a package express <-- look for a package called express at npmjs.com --save <-- make this global so we can call express from anywhere
Creating an Express Project
Now go to where you want to have your project files sit and type this into the terminal:
$ express name-of-your-project
The above command will create a directory with the name
name-of-your-project and generate a skeleton project for you to get started. The directory structure is as follows:
bin folder is where your binaries should go and is also where the project launcher sits.
All requests to your assets under
routes folder holds all of your controllers that map to a front end url. A basic express project has all of your routes defined through
app.js which reads the
users.js files by default for paths.
views directory holds the views for your html templates. The routes have a place for each path to map to a view in this folder. This folder can be moved and by default the html templates will be
Jade templates. You can change this to another templating system like
Handlebars if you wish. My personal preference is to use
Handlebars and I will add a guide on how to switch this. The views directory (and templating engine) are defined in
This is the main entry point of an express project. All requests are passed through this file. This file holds all of our configuration and set up for our web application.
This is where we hold our npm dependencies for the backend like
underscore or any other library that you find yourself in need of. To install all of the dependencies here just open up a terminal and go to your project and type in this:
$ npm install
It will then search
package.json and attempt to find a matching package on npmjs.com and install the package locally under a folder called
Running your project
Type in the following in a terminal at the root of your project:
$ npm start
It should successfully start running a web instance of your project that you can visit via localhost:3000. I like to use a tool called nodemon because it automatically restarts the webserver every time you change a
nodemon run the following in a terminal:
$ npm install -g nodemon
This will install it globally via the
-g flag. And now replace
npm start with (at the root of your project):
$ nodemon bin/www
That’s it! We now have a test project all set up and we can begin working on getting our pages running and hooking things up to a database and api.