express API

参考:http://expressjs.com/en/4x/api.html

引入express模块:

var express = require('express');

我们知道,JavaScript也有类似于Java中的静态方法和实例方法、静态成员变量和实例成员变量的区分。

直接使用express.xx()就是使用的静态方法,下面是express的静态方法和静态成员变量:

express还有很多的实例方法,这样获得express实例:

var app = express();

使用app.xx()就是使用的实例方法,下面是express的实例方法和静态成员变量:

1.2、app.listen(port | socketFilePath);

参考:http://expressjs.com/en/4x/api.html#app.listen

用户监听指定端口或者Unix Domain Socket。作为服务器使用。

1.3、express.static(String path [, Object options]);

此方法是基于serve-static模块实现的。

options对象的属性如下:

属性类型缺省值说明
dotfilesStringignore是否对外输出文件名以点(.)开头的文件。以点(.)开头的文件是隐藏文件,一般是不想让别人访问的。 可选值为:allowdenyignore
etagBooleantrue是否启用etag生成。
extensionsArray[]设置文件扩展名备份选项
indexBoolean | Stringindex.html发送目录索引文件,设置为false禁用目录索引。
lastModifiedBooleantrue设置Last-Modified头为文件在操作系统上的最后修改日期。
maxAgeNumber0以毫秒或者其字符串格式设置 Cache-Control 头的 max-age 属性。
redirectBooleantrue当路径为目录时,重定向至“/”。
setHeadersBooleantrue设置HTTP头以提供文件的函数。原型为function(response, path, stat)

示例(创建一个静态的文件服务器):

var express = require('express');
app = express();

app.use(express.static(__dirname + '/public'));
app.listen(8080);

console.log('Server running at http://127.0.0.1:8080.');

上面将监听在8080端口,所以这是一个服务器了,并且将__dirname + '/public'目录映射为主机目录。可以直接访问该目录下的任何文件。

使用express命令创建的Web Appapp.js文件中有如下的代码:

app.use(express.static(path.join(__dirname, 'public')));

这表示,我们项目中的静态文件(jscss、其他文件)都放在public目录下。

如果,我们不对jscss进行压缩处理,这倒是没什么问题,但是, 我们通常会对jscss进行压缩处理的, 我们希望使用压缩后的那些文件,而不是开发时候的源代码!所以,我们就需要把public修改为存放我们压缩后的目录。

每个应用可有多个静态目录。也就是这个函数可以多次调用,设置不同的目录。

1.4、app.set(key, value);

参考:http://expressjs.com/en/4x/api.html#app.set

用于设置一个值。

示例1:设置views文件夹的路径

app.set('views', path.join(__dirname, 'views'));

示例2:设置view的模版引擎名称

app.set('view engine', 'ejs');

示例3:设置环境(开发环境-development,生产环境-production)

app.set('env', 'development');
1.5、app.get(key);

参考:http://expressjs.com/en/4x/api.html#app.get

获得指定的key得到指。

1.6、app.use([String path,] Function handler...);

参考:http://expressjs.com/en/4x/api.html#app.use

path可有可无,它通常成为挂载点。

handler中间件或者路由

这个函数是使用频率最高的,因为它使用起来非常灵活,它内部会根据传入的参数个数、参数类型进行判断,到底用作什么用途。

使用express命令创建的Web App项目中的app.js文件中有大量的使用示例。

1.7、app.METHOD(String path, Function handler...);

参考:http://expressjs.com/en/4x/api.html#app.METHOD

path必须指定。

handler中间件或者路由

express默认提供了HTTP的所有请求方式的方法,把METHOD换成对用方式的小写就可以了。

方法说明
app.get(path, handler...);HTTPGET请求处理
app.post(path, handler...);HTTPPOST请求处理
app.put(path, handler...);HTTPPUT请求处理
app.delete(path, handler...);HTTPDELETE请求处理
app.all(path, handler...);HTTP的所有请求方式的处理。不管是哪种类型的请求,这通常用做拦截器,做一些全局的处理。