Express框架之app.js配置文件说明
2012-07-24 01:17
776 查看
express.js是nodejs的一个MVC开发框架,并且支持jade等多种模板。下面简单来说说express的app.js文件的配置内容
先看一下这个app.js文件
>>引入模块
require()是node.js提供的函数,可以让你引入其他模块以调用模块的函数和变量,默认下node.js会在$NODE_PATH和目前js所在目录下的node_modules文件夹下去寻找模块,express.js继承自connect模块,所以如果你的node_modules文件夹下没有connect模块也是不行的。
[b]>>设置views路径和模板[/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配置
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()里面指定的文件夹中的文件会直接作为静态资源吐出来。
[b]>>app.configure设置 [/b]
[b] express.errorHandler()是Connect內建的中间件来协助处理例外。这里也揭露了app.configure()的另一用法,第一个参数是node.js的环境设定,如此我们就可以设定在不同的执行环境下使用不同的dump。注意:node.js是透过NODE_ENV這个环境变量来取得环境设定,e.g.:在命令列,NODE_ENV=production node app.js就可以进入production环境。[/b]
[b][b]>>路由和request的处理 [/b][/b]
[b][b] 上面的代码意思是,get请求根目录则调用views文件夹中的index模板,并且传入参数title为“Express”,这个title就可以在模板文件中直接使用。[/b][/b]
[b][b] 在express中要处理post请求,需要使用app.post()。如下面的代码: [/b][/b]
前面我们提到了req.body是express.bodyParser()把POST参数处理后的结果。
另外除了get和post方法,还有app.all()意思就是所有的请求处理。
>>添加listen,启动nodejs服务器
先看一下这个app.js文件
/** * Module dependencies. */ var express = require('express') , routes = require('./routes') , http = require('http'); var app = express(); app.configure(function(){ app.set('port', process.env.PORT || 3000); app.set('views', __dirname + '/views'); app.set('view engine', 'jade'); app.use(express.favicon()); app.use(express.logger('dev')); app.use(express.bodyParser()); app.use(express.methodOverride()); app.use(app.router); app.use(express.static(__dirname + '/public')); }); app.configure('development', function(){ app.use(express.errorHandler()); }); app.get('/', routes.index); http.createServer(app).listen(app.get('port'), function(){ console.log("Express server listening on port " + app.get('port')); });
>>引入模块
var express = require('express');
require()是node.js提供的函数,可以让你引入其他模块以调用模块的函数和变量,默认下node.js会在$NODE_PATH和目前js所在目录下的node_modules文件夹下去寻找模块,express.js继承自connect模块,所以如果你的node_modules文件夹下没有connect模块也是不行的。
[b]>>设置views路径和模板[/b]
app.set('views', __dirname + '/views'); app.set('view engine', 'jade');
上面两行是设置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配置
app.use(express.bodyParser()); app.use(express.methodOverride()); app.use(app.router); app.use(express.static(__dirname + '/public'));
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()里面指定的文件夹中的文件会直接作为静态资源吐出来。
[b]>>app.configure设置 [/b]
[b]app.configure('development', function(){ app.use(express.errorHandler({ dumpExceptions: true, showStack: true })) ; }); app.configure('production', function(){ app.use(express.errorHandler()); });[/b]
[b] express.errorHandler()是Connect內建的中间件来协助处理例外。这里也揭露了app.configure()的另一用法,第一个参数是node.js的环境设定,如此我们就可以设定在不同的执行环境下使用不同的dump。注意:node.js是透过NODE_ENV這个环境变量来取得环境设定,e.g.:在命令列,NODE_ENV=production node app.js就可以进入production环境。[/b]
[b][b]>>路由和request的处理 [/b][/b]
[b][b]app.get('/', function(req, res){ res.render('index', { title: 'Express' }); });[/b][/b]
[b][b] 上面的代码意思是,get请求根目录则调用views文件夹中的index模板,并且传入参数title为“Express”,这个title就可以在模板文件中直接使用。[/b][/b]
[b][b] 在express中要处理post请求,需要使用app.post()。如下面的代码: [/b][/b]
[b][b]app.post('/add', function(req,res){ res.render('add', { sum: req.body.a + req.body.b }); });[/b][/b]
前面我们提到了req.body是express.bodyParser()把POST参数处理后的结果。
另外除了get和post方法,还有app.all()意思就是所有的请求处理。
>>添加listen,启动nodejs服务器
http.createServer(app).listen(app.get('port'), function(){ console.log("Express server listening on port " + app.get('port')); });
app.set('port', process.env.PORT || 3000);
相关文章推荐
- Express框架之app.js配置文件说明
- Express框架之app.js配置文件说明
- Express框架之app.js配置文件说明
- php ci 框架的app/config/config.php配置文件说明
- node.js在windows下的学习笔记(7)---express的app.js的详细配置说明
- nodejs教程 安装express及配置app.js文件的详细步骤
- nodejs教程:安装express及配置app.js文件
- nodejs教程 安装express及配置app.js文件的详细步骤
- express的app.js的详细配置说明
- nodejs使用express4框架默认app.js配置说明
- nodejs教程:安装express及配置app.js文件
- nodejs教程 安装express及配置app.js文件的详细步骤
- nodejs教程:安装express及配置app.js文件
- nodejs使用express4框架默认app.js配置说明
- nodejs教程:安装express及配置app.js文件------转
- express默认配置文件app.js
- 安装express及配置app.js文件
- ci框架在pathinfo模式禁用的时候怎么办,BAE的配置文件app.conf
- JForum框架结构和主要配置文件说明
- 关于PHP-Zend framework2 框架 学习过程。 阅前须知: ZF2中的配置文件是可以静态文件配置来注册和通过相关函数动态注册。 1.EventManager(事件驱动),关于事件驱动,在ZF2相关资料没有详细说明,可以参考ANDROID的事件驱动,MFC的消息响应/事件驱动。