express api 解读

松嘉运
2023-12-01


app.engine(ext, callback)


注册模板引擎的 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([name], callback)  参数校验使用


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);
});




app.all('*',function(req,res,next){
next();
},function(req,res,next){
next();
});

res.cookie(name, value, [options])



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');


























 类似资料: