关于express模板的一些小知识点:
模板引擎:
默认ejs模板只支持渲染以ejs为扩展名的文件,可能在使用的时候会觉得它的代码书写方式 很不爽还是想用html的形式去书写,该怎么办呢,这时就得去修改模板引擎了,也就会用到express的engine函数
- // 修改模板文件的后缀名为html
- app.set( 'view engine', 'html' );
- // 运行ejs模块
- app.engine( '.html', require( 'ejs' ).__express );
"__express",ejs模块的一个公共属性,表示要渲染的文件扩展名。
cookieparser模块:
var cookieParser = require('cookie-parser');
app.use(cookieParser());
app.get('/',function (req,res) { if(req.cookies.isVisit){ console.log(res.cookies); res.send("再次访问"); }else{ res.cookie('isVisit',1, {maxAge: 60 * 1000}); res.send("欢迎第一次访问"); } });
session模块:
session-parser的模块需要自己导入
npm install session-parser
var session = require('express-session');
app.use(session({
secret: 'hello app', //secret的值建议使用随机字符串
cookie: {maxAge: 60 * 1000 * 30} // 过期时间(毫秒)
}));
app.get('/',function (req,res) {
if(req.session.flag){
res.send('欢迎再次访问');
}else{
req.session.flag =true;
res.send('第一次访问');
}
});
为了防止重新启动node app后session就直接可以把session存储在数据库中
var express = require('express'); var session = require('express-session'); var RedisStore = require('connect-redis')(session); var app = express(); var options = { "host": "127.0.0.1", "port": "6379", "ttl": 60 * 60 * 24 * 30, //session的有效期为30天(秒) }; // 此时req对象还没有session这个属性 app.use(session({ store: new RedisStore(options), secret: 'Helloween' }));