Getting started
With node installed (download), get your first application started by creating a directory somewhere on your machine:
$ mkdir hello-world
In this same directory you'll be defining the application "package", which are no different than any other node package. You'll need a package.json file in the directory, with express defined as a dependency:
{
"name": "hello-world",
"description": "hello world test app",
"version": "0.0.1",
"private": true,
"dependencies": {
"express": "3.0.0"
}
}
Now that you have a package.json file in this directory you can use
npm(1) to install the dependencies, in this case just
Express:
$ npm install
Once npm finishes you'll have a localized Express 3.x dependency in
the ./node_modules directory. You may verify this with npm ls
as shown in the following snippet displaying a tree of Express and its
own dependencies.
$ npm ls
hello-world@0.0.1 /private/tmp
└─┬ express@3.0.0beta7
├── commander@0.6.1
├─┬ connect@2.3.9
│ ├── bytes@0.1.0
│ ├── cookie@0.0.4
│ ├── crc@0.2.0
│ ├── formidable@1.0.11
│ └── qs@0.4.2
├── cookie@0.0.3
├── debug@0.7.0
├── fresh@0.1.0
├── methods@0.0.1
├── mkdirp@0.3.3
├── range-parser@0.0.4
├─┬ response-send@0.0.1
│ └── crc@0.2.0
└─┬ send@0.0.3
└── mime@1.2.6
Now to create the application itself! Create a file named app.js or server.js,
whichever you prefer, require express and then create a new application with express():
var express = require('express');
var app = express();
With the new application instance you can start defining routes via app.VERB(),
in this case "GET /" responding with the "Hello World" string. The req and
res are the exact same objects that node provides to you, thus you may invoke
res.pipe(), req.on('data', callback) and anything else you
would do without Express involved.
app.get('/', function(req, res){
res.send('Hello World');
});
Now to bind and listen for connections invoke the app.listen() method,
accepting the same arguments as node's net.Server#listen():
app.listen(3000);
console.log('Listening on port 3000');Using express(1) to generate an app
Express is bundled with an executable, aptly named express(1).
If you install express globally with npm you'll have it available from anywhere
on your machine:
$ npm install -g express
This tool provides a simple way to get an application skeleton going,
but has limited scope, for example it supports only a few template engines,
whereas Express itself supports virtually any template engine built for node.
Be sure to check out the --help:
Usage: express [options]
Options:
-h, --help output usage information
-V, --version output the version number
-s, --sessions add session support
-e, --ejs add ejs engine support (defaults to jade)
-J, --jshtml add jshtml engine support (defaults to jade)
-h, --hogan add hogan.js engine support
-c, --css add stylesheet support (less|stylus) (defaults to plain css)
-f, --force force on non-empty directory If you want to generate an application with EJS, Stylus, and session support you would simply execute:
$ express --sessions --css stylus --ejs myapp
create : myapp
create : myapp/package.json
create : myapp/app.js
create : myapp/public
create : myapp/public/javascripts
create : myapp/public/images
create : myapp/public/stylesheets
create : myapp/public/stylesheets/style.styl
create : myapp/routes
create : myapp/routes/index.js
create : myapp/views
create : myapp/views/index.ejs
install dependencies:
$ cd myapp && npm install
run the app:
$ node app
Like any other node application, you must then install the dependencies:
$ cd myapp
$ npm install
Then fire it up!
$ node app
That's all you need to get a simple application up and running. Keep in mind that Express is not bound to any specific directory structure, these are simply a baseline for you to work from. For application structure alternatives be sure to view the examples found in the github repo.
