Express框架之app.js配置文件说明

express.jsnodejs的一个MVC开发框架,并且支持jade等多种模板。下面简单来说说express的app.js文件的配置内容

先看一下这个app.js文件

 

01/**
02  * Module dependencies.
03  */
04 
05 var express = require('express')
06   , routes = require('./routes')
07   , http = require('http');
08 
09 var app = express();
10 
11 app.configure(function(){
12   app.set('port', process.env.PORT || 3000);
13   app.set('views', __dirname + '/views');
14   app.set('view engine''jade');
15 
16   app.use(express.favicon());
17   app.use(express.logger('dev'));
18   app.use(express.bodyParser());
19   app.use(express.methodOverride());
20   app.use(app.router);
21   app.use(express.static(__dirname + '/public'));
22});
23 
24 app.configure('development'function(){
25   app.use(express.errorHandler());
26});
27 
28 app.get('/', routes.index);
29 
30 http.createServer(app).listen(app.get('port'), function(){
31   console.log("Express server listening on port " + app.get('port'));
32});

 

>>引入模块

 

1 var express = require('express');

 

    require()是node.js提供的函数,可以让你引入其他模块以调用模块的函数和变量,默认下node.js会在$NODE_PATH和目前js所在目录下的node_modules文件夹下去寻找模块,express.js继承自connect模块,所以如果你的node_modules文件夹下没有connect模块也是不行的。

>>设置views路径和模板

 

1 <b>app.set('views', __dirname + '/views');
2 app.set('view engine''jade');</b>

 

    上面两行是设置views文件夹,即模板文件夹,__dirname是node.js里面的全局变量,即取得执行的js所在的路径,另外__dirname是目前执行的js文件名。所以,app.set(‘views’, __dirname + ‘/views’);是设置views的文件夹。

 

    而app.set('view engine', 'jade');是设置express.js所使用的render engine。除了Jade之外express.js还支持EJS(embedded javascript)、Haml、CoffeScript和jQuerytemplate等js模板

>>app.use配置

 

1<b>app.use(express.bodyParser());
2app.use(express.methodOverride());
3app.use(app.router);
4 app.use(express.static(__dirname + '/public'));</b>

 

    express.bodyParser()是Connect內建的middleware,设置此处可以将client提交过来的post请求放入request.body中。
    express.methodOverride()也是Connect內建的,可以协助处理POST请求伪装PUT、DELETE和其他HTTP methods。
    app.router()是route requests,但express.js的官方文件是这句可有可无,并且经过测试还真的是这样,不过还是写上吧。

    express.static()也是一个Connect內建的中间件来处理静态的requests,例如css、js、img文件等。所以static()里面指定的文件夹中的文件会直接作为静态资源吐出来。

>>app.configure设置

 

1 <b><b>app.configure('development'function(){
2    app.use(express.errorHandler({ dumpExceptions: true, showStack: true }))
3;
4});
5  app.configure('production'function(){
6  app.use(express.errorHandler());
7});</b></b>

 

    express.errorHandler()是Connect內建的中间件来协助处理例外。这里也揭露了app.configure()的另一用法,第一个参数是node.js的环境设定,如此我们就可以设定在不同的执行环境下使用不同的dump。注意:node.js是透过NODE_ENV這个环境变量来取得环境设定,e.g.:在命令列,NODE_ENV=production node app.js就可以进入production环境。

>>路由和request的处理

 

1 <b><b><b>app.get('/'function(req, res){
2  res.render('index', {
3  title: 'Express'
4});
5});</b></b></b>

 

    上面的代码意思是,get请求根目录则调用views文件夹中的index模板,并且传入参数title为“Express”,这个title就可以在模板文件中直接使用。

    在express中要处理post请求,需要使用app.post()。如下面的代码:

 

1 <b><b><b>app.post('/add'function(req,res){
2    res.render('add', {
3  sum: req.body.a + req.body.b
4});
5});</b></b></b>

 

    前面我们提到了req.body是express.bodyParser()把POST参数处理后的结果。

    另外除了get和post方法,还有app.all()意思就是所有的请求处理。

>>添加listen,启动nodejs服务器

 

1 <b>http.createServer(app).listen(app.get('port'), function(){
2   console.log("Express server listening on port " + app.get('port'));
3});</b>

 

 

 

1 app.set('port', process.env.PORT || 3000);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值