Skip to content

Instantly share code, notes, and snippets.

@dasher
Created March 26, 2013 05:39
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save dasher/5243390 to your computer and use it in GitHub Desktop.
Save dasher/5243390 to your computer and use it in GitHub Desktop.
Getting started
With node installed (download), get your first application started by creating a directory somewhere on your machine:
$ mkdir hello-world
$ cd hello-word
$ git init
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. You may use npm info express version to fetch the latest version, it's preferred that you do this instead of "3.x" below to prevent any future surprises.
{
"name": "hello-world",
"description": "hello world test app",
"version": "0.0.1",
"private": true,
"dependencies": {
"express": "3.x"
}
}
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 server.js, 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('/hello.txt', function(req, res){
var body = 'Hello World';
res.setHeader('Content-Type', 'text/plain');
res.setHeader('Content-Length', body.length);
res.end(body);
});
/*
Express augments these objects providing you with higher level methods such as res.send(), which among other things adds the Content-Length for you:
*/
app.get('/hello.txt', 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');
Now save the file
$ git add .
$ git commit -m "My first app!"
$ node server.js
Now visit: "127.0.0.1:3000/hello.txt" in your browser :)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment