下面來講一下最近小sam在作項目遇到的一些小問題,首先是session了,即然是服務器渲染又須要用戶登陸功能,那麼用session去記錄用戶登陸態是必須要了~~在express中用的是express-session,那麼在koa2中用的是哪一個模塊redis
1.koa2-cookie-sessionexpress
1.Install
npm install koa2-cookie-session --save
2.Usage
import Koa from "koa"; import session from "koa2-cookie-session";//注意這裏的引入,必定要用improt from的姿式,不能用require的方法,否則會報錯…… const app = new Koa(); //Options app.use(session({ key: "SESSIONID", //default "koa:sid" expires:3, //default 7 path:"/" //default "/" })); app.use(ctx => { ctx.session.user = { name: "myname" }; ctx.body = ctx.session; });
2.koa-session-redis
若是有用到redis想把session存在redis上的話用這個……npm
1.install服務器
$ npm install koa-session-redis
2.Examplecookie
var session = require('koa-session-redis'); var koa = require('koa'); var app = koa(); app.keys = ['some secret hurr']; app.use(session({ store: { host: process.env.SESSION_PORT_6379_TCP_ADDR || '127.0.0.1', port: process.env.SESSION_PORT_6379_TCP_PORT || 6379, ttl: 3600, }, }, )); app.use(function *(){ var n = this.session.views || 0; this.session.views = ++n; this.body = n + ' views'; }) app.listen(3000); console.log('listening on port 3000');
redis須要在服務器安裝,安裝的過程這裏就不說了……假如在服務器上安裝好了redis,那麼怎樣在koa2上用,
1.ioredissession
npm install ioredis --save
2.在koa2中用法app
const router = require('koa-router')(); const Redis=require('ioredis'); const redis=new Redis({ host : '127.0.0.1',//安裝好的redis服務器地址 port : 80, //端口 prefix : 'sam:',//存諸前綴 ttl : 60 * 60 * 23,//過時時間 db: 0 }); router.get('/',async function(ctx,next){ redis.set("test","kwg kwg kwg"); const doc = await redis.get("test",function(err,doc){ return doc; }); ctx.body=doc; }); module.exports = router;
大概就這樣子~~~koa