注册模板引擎的 callback
用来处理ext
扩展名的文件 默认情况下, 根据文件扩展名require()
对应的模板引擎。 比如你想渲染一个 "foo.jade" 文件,Express会在内部执行下面的代码,然后会缓存require()
,这样就可以提高后面操作的性能
把模板ejs文件后缀修改为html
var express = require('express');
var app = express();
app.set('title', 'My Site');
app.set('view engine', 'html');
app.engine('html',require('ejs').renderFile);
app.get('/mytest',function(req,res){
console.log("你好模板");
res.render('index', {
title: 'Express',
name:req.params.name,
pagename:'这是我的页面'
});
});
app.listen(3000);
console.log('express');
res.render('foo.html', {title: 'test'});
res.render('index', {
title: 'Express',
name:req.params.name,
pagename:'这是我的页面'
});
app.param('user',function(req,res,next,id){
console.log("id="+id);
console.log( "req.params.user="+req.params.user);
next();
});
app.get('/mytest/:user',function(req,res){
console.log("/mytest/:user="+req.params.user);
});
fn instanceof RegExp 正则判断 regExp正则类
app.param(function(name, fn){
if (fn instanceof RegExp) {
return function(req, res, next, val){
var captures;
if (captures = fn.exec(String(val))) {
req.params[name] = captures;
next();
} else {
next('route');
}
}
}
});
这种方式需要使用一个模块:express-params
$ npm install express-params
var express = require('express') , params = require('express-params') , app = express.createServer(); params.extend(app); 这句话一定不能丢app.param('id', Number); app.get('/user/:id', function(req, res, next){ var id = req.params.id; res.send('typeof ' + typeof id + ' ' + id); });return null == val || false === val || ('number' == typeof val && isNaN(val));
app.param('id', /^\d+$/);
app.get('/user/:id', function(req, res){
res.send('user ' + req.params.id);
});
var express = require('express'), params = require('express-params');
var app = express();
params.extend(app);
app.set('title', 'My Site');
app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(express.cookieParser());
// 如果没有 显示记录cookie的表单
//如果没有 显示记录cookie的表单
app.get('/', function(req, res){
if (req.cookies.remember) {
res.send('Remembered :). Click to <a href="/forget">forget</a>!.');
} else {
res.send('<form method="post"><p>Check to <label>'
+ '<input type="checkbox" name="remember"/> remember me</label> '
+ '<input type="submit" value="Submit"/>.</p></form>');
}
});
//删除cookie
app.get('/forget', function(req, res){
res.clearCookie('remember');//删除
res.redirect('back');
});
//提交表单、记录cookie
app.post('/', function(req, res){
var minute = 60000;
if (req.body.remember) res.cookie('remember', 1, { maxAge: minute });
res.redirect('back');
});
app.listen(3000);
console.log('express');