复制代码 代码如下:
$ npm install express
或者在任何地方使用可执行的 express(1) 安装:
复制代码 代码如下:
\# 译注:强烈建议这种方式
$ npm install -g express
二、快速上手
最快上手 express 的方法是利用可执行的 express(1) 来生成一个应用,如下所示:
创建一个 app:
复制代码 代码如下:
$ npm install -g express
$ express /tmp/foo && cd /tmp/foo
安装依赖包:
复制代码 代码如下:
$ npm install -d
启动服务器:
复制代码 代码如下:
$ node app.js
三、创建一个服务器
要创建一个 express.HTTPServer 实例,只需调用 createServer() 方法。 通用这个应用实例,我们可以定义基于 HTTP 动作(HTTP Verbs)的路由,以 app.get() 为例:
复制代码 代码如下:
var app = require('express').createServer();
app.get('https://www.jb51.net/', function(req, res){
res.send('hello world');
});
app.listen(3000);
四、创建一个 HTTPS 服务器
如上述初始化一个 express.HTTPSServer 实例。然后我们给它传一个配置对象,接受 key、cert 和其他在 https 文档 所提到的(属性/方法)。
复制代码 代码如下:
var app = require('express').createServer({ key: ... });
五、配置
Express 支持任意环境,如产品阶段(production)和开发阶段(development)。开发者可以使用 configure() 方法来设置当前所需环境。如果 configure() 的调用不包含任何环境名,它将运行于所有环境中所指定的回调。
译注: 像 production / development / stage 这些别名都是可以自已取的,如 application.js 中的 app.configure 所示。实际用法看下面例子。
下面这个例子仅在开发阶段 dumpExceptions (抛错),并返回堆栈异常。不过在两个环境中我们都使用 methodOverride 和 bodyParser。注意一下 app.router 的使用,它可以(可选)用来加载(mount)程序的路由,另外首次调用 app.get()、app.post() 等也将会加载路由。
复制代码 代码如下:
app.configure(function(){
app.use(express.methodOverride());
app.use(express.bodyParser());
app.use(app.router);
});
app.configure('development', function(){
app.use(express.static(__dirname + '/public'));
app.use(express.errorHandler({ dumpExceptions: true, showStack: true }));
});
app.configure('production', function(){
var oneYear = 31557600000;
app.use(express.static(__dirname + '/public', { maxAge: oneYear }));
app.use(express.errorHandler());
});
对于相似的环境你可以传递多个环境字符串:
复制代码 代码如下:
app.configure('stage', 'prod', function(){
// config
});
对于任何内部设置(#),Express 提供了 set(key[, val])、 enable(key) 和 disable(key) 方法:
译注:设置详见:application.js 的 app.set。
复制代码 代码如下:
app.configure(function(){
app.set('views', __dirname + '/views');
app.set('views');
// => "/absolute/path/to/views"
app.enable('some feature');
// 等价于:app.set('some feature', true);
app.disable('some feature');
// 等价于:app.set('some feature', false);
app.enabled('some feature')
// => false
});
变更环境我们可以设置 NODE_ENV 环境变量,如:
复制代码 代码如下:
$ NODE_ENV=production node app.js
这非常重要,因为多数缓存机制只在产品阶段是被打开的。
六、设置
Express 支持下列快捷(out of the box)设置:
1.basepath 用于 res.redirect() 的应用程序基本路径(base path),显式地处理绑定的应用程序(transparently handling mounted apps.)
2.view View 默认的根目录为 CWD/views
3.view engine 默认 View 引擎处理(View 文件)并不需要使用后缀
4.view cache 启用 View 缓存 (在产品阶段被启用)
5.charet 改变编码,默认为 utf-8
6.case sensitive routes 路由中区分大小写
7.strit routing 启用后(路由中的)结尾 / 将不会被忽略(译注:即 app.get('/sofish') 和 app.get('/sofish/') 将是不一样的)
8.json callback 启用 res.send() / res.json() 显式的 jsonp 支持(transparent jsonp support)
七、路由