node.js Web应用框架Express入门指南

复制代码 代码如下:

$ 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)

七、路由

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wgpfww.html