Express: Fast, unopinionated, minimalist web framework for Node.js(Express是一个快速,高度包容,极简的Node.js框架)。事实上,只要对Node.js稍有了解,基本上就可以入门Express了,本人就是对Node.js有些了解之后就去学习了一下Express,自身感觉正如官方介绍那样。


1. 入门

使用Express之前确保你的机器上安装有Node.js环境。

创建工程目录,并进入到工程目录:

1
2
$ mkdir express
$ cd express

使用npm init命令为应用程序创建package.json文件:

1
$ npm init

输入npm init命令时,除了entry point: (index.js)选项修改index.jsapp.js(入口文件)之外(当然也可以使用默认值),其余的选项可以直接回车选择默认值。
此时,工程中会生成一个package.json文件,打开看一下,基本长这样:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
{
"name": "express",
"version": "1.0.0",
"description": "start express",
"main": "app.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [
"express"
],
"author": "yvshare.cn",
"license": "ISC"
}

在当前目录中安装Express,然后将其保存在依赖项列表中。例如:

1
$ npm install express --save

要暂时安装Express而不将其添加到依赖项列表中,请省略--save选项:

1
$ npm install express

采用 --save 选项安装的 Node 模块已添加到 package.json 文件中的 dependencies 列表。 今后运行 app 目录中的 npm install 将自动安装依赖项列表中的模块。

1.1步骤的基础上,开始创建第一个程序,创建一个app.js文件(对应npm init时的entry point: (app.js)),并填入代码:

1
2
3
4
5
6
7
8
9
10
11
// app.js
var express = require('express');
var app = express();

app.get('/', function (req, res) {
res.send('Hello World!');
});

app.listen(3000, function () {
console.log('Example app listening on port 3000!');
});

应用程序会启动服务器,并在端口 3000 上侦听连接。此应用程序以“Hello World!”响应针对根 URL (/) 或路由的请求。对于其他所有路径,它将以 404 Not Found 进行响应。
req(请求)和 res(响应)与 Node 提供的对象完全相同,所以您可以在不涉及 Express 的情况下调用 req.pipe()、req.on('data', callback) 和要执行的其他任何函数。

使用以下命令运行应用程序:

1
$ node app.js

然后,在浏览器中输入 http://localhost:3000/ 以查看输出。

Express 生成器的作用就像是为完整的应用程序建立一个“脚手架”,包含各种用途的 JavaScript 文件、Jade 模板和子目录。

使用以下命令安装 express:

1
$ npm install express-generator -g

使用 -h 选项显示命令选项:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
$ express -h

Usage: express [options] [dir]


Options:

--version output the version number
-e, --ejs add ejs engine support
--pug add pug engine support
--hbs add handlebars engine support
-H, --hogan add hogan.js engine support
-v, --view <engine> add view <engine> support (dust|ejs|hbs|hjs|jade|pug|twig|vash) (defaults to jade )
-c, --css <engine> add stylesheet <engine> support (less|stylus|compass|sass) (defaults to plain css )
--git add .gitignore
-f, --force force on non-empty directory
-h, --help output usage information

例如,以下语句在当前工作目录中创建名为 myappExpress 应用程序:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
$ express --view=pug myapp

create : myapp
create : myapp/package.json
create : myapp/app.js
create : myapp/views
create : myapp/views/index.pug
create : myapp/views/layout.pug
create : myapp/views/error.pug
create : myapp/public
create : myapp/routes
create : myapp/routes/index.js
create : myapp/routes/users.js
create : myapp/bin
create : myapp/bin/www
create : myapp/public/images
create : myapp/public/stylesheets
create : myapp/public/stylesheets/style.css

install dependencies:
$ cd myapp && npm install

run the app:
$ DEBUG=myapp:* npm start

create : myapp/public/javascripts

进入到 myapp 目录,然后安装依赖项:

1
$ npm install

在 MacOS 或 Linux 上,采用以下命令运行此应用程序:

1
$ DEBUG=myapp:* npm start

在 Windows 上,使用以下命令:

1
set DEBUG=myapp:* & npm start

或者直接

1
$ npm start

然后在浏览器中输入 http://localhost:3000/ 以访问此应用程序。

生成的应用程序具有以下目录结构:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
.
├── app.js
├── bin
│ └── www
├── package.json
├── public
│ ├── images
│ ├── javascripts
│ └── stylesheets
│ └── style.css
├── routes
│ ├── index.js
│ └── users.js
└── views
├── error.pug
├── index.pug
└── layout.pug

7 directories, 9 files

生成器创建的应用程序结构只是构造 Express 应用程序的众多方法之一。请随意使用此结构或者对其进行修改以最大程度满足自己的需求。