Express
安装express-generator,然后用它来创建一个工程;
npm install express-generator -g
express myApp
cd myApp
npm install
npm start 或是 node bin/www
访问 http://localhost:3000/ 即可看到Express的字样;
Express Generator搭建HTTPS前端框架 - 简书
Session
在 express中操作 session要用到 express-session这个模块,主要的方法就是 session(options),
其中 options为JSON对象,包含可选参数,主要有:name: 设置 cookie 中,保存 session 的字段名称,默认为 connect.sid 。
store: session 的存储方式,默认存放在内存中,也可以使用 redis,mongodb 等。express 生态中都有相应模块的支持。
secret: 通过设置的 secret 字符串,来计算 hash 值并放在 cookie 中,使产生的 signedCookie 防篡改。
cookie: 设置存放 session id 的 cookie 的相关选项,默认为(default: { path: '/', httpOnly: true, secure: false, maxAge: null })
genid: 产生一个新的 session_id 时,所使用的函数, 默认使用 uid2 这个 npm 包。
rolling: 每个请求都重新设置一个 cookie,默认为 false。
resave: 即使 session 没有被修改,也保存 session 值,默认为 true。
在原有项目中添加代码
app.js
var createError = require('http-errors'); var express = require('express'); var path = require('path'); var cookieParser = require('cookie-parser'); var logger = require('morgan'); var session = require('express-session'); var indexRouter = require('./routes/index'); var usersRouter = require('./routes/users'); var app = express(); // view engine setup app.set('views', path.join(__dirname, 'views')); app.set('view engine', 'jade'); app.use(logger('dev')); app.use(express.json()); app.use(express.urlencoded({ extended: false })); app.use(cookieParser()); app.use(express.static(path.join(__dirname, 'public'))); app.use(session({ secret: 'recommand 128 bytes random string', // 建议使用 128 个字符的随机字符串 cookie: { maxAge: 60 * 1000 } })); app.use('/', indexRouter); app.use('/users', usersRouter); // catch 404 and forward to error handler app.use(function(req, res, next) { next(createError(404)); }); // error handler app.use(function(err, req, res, next) { // set locals, only providing error in development res.locals.message = err.message; res.locals.error = req.app.get('env') === 'development' ? err : {}; // render the error page res.status(err.status || 500); res.render('error'); }); module.exports = app;
session需要在 route之前 use;
routes/users.js
var express = require('express'); var router = express.Router(); /* GET users listing. */ router.get('/', function(req, res, next) { if(req.session.isVisit) { req.session.isVisit++; res.send('<p>第 ' + req.session.isVisit + ' 次来此页面</p>'); } else { req.session.isVisit = 1; res.send("<p>欢迎第 1 次来此页面</p>"); } }); module.exports = router;
Session中添加了 isVisit字段。