前言
- 这几天着手使用koa搭建后端服务器
- 使用的一些插件记录下来以后方便使用
- 使用 koa的框架所以路由等插件我也不写了
- 有一些之前express用过的就不写了
工具/资料
- 开发环境 mac os 10.13.3 node 10 npm 6.4
- 部署环境 阿里云 Centos 7 64位
- 参考网址NPM: https://www.npmjs.com/
- node 8.0.0 / npm 6.9.0 / cnpm 6.0.0
开始
解决跨域问题(koa2-cors)
插件轻松解决跨域问题
1
$ cnpm i koa2-cors -S
配置(括号里面的对象可写可不写)
1
2
3
4
5
6
7
8
9const cors = require('koa2-cors')
// 处理跨域问题
app.use(cors({
exposeHeaders: ['WWW-Authenticate', 'Server-Authorization', 'Date'],
maxAge: 100,
credentials: true,
allowMethods: ['GET', 'POST', 'OPTIONS'],
allowHeaders: ['Content-Type', 'Authorization', 'Accept', 'X-Custom-Header', 'anonymous'],
}));
es6转es5
插件加配置解决es6烦恼(node9以上的就没有这个烦恼)
1
$ cnpm i babel-plugin-transform-es2015-modules-commonjs babel-register -S
配置(引入插件输出入口文件,新建start.js文件)
1
2
3
4
5
6
7
8require('babel-register')
(
{
plugins: ['babel-plugin-transform-es2015-modules-commonjs'],
}
)
module.exports = require('./www.js')改变启动package.json文件
处理原生node还是koa都无法解析request的body(post传值解析)
安装插件
1
$ cnpm i koa-body koa-bodyparser -S
配置
1
2
3
4
5
6const koaBody = require('koa-body')
const bodyparser = require('koa-bodyparser')
app.use(koaBody()).use(bodyparser({
enableTypes:['json', 'form', 'text']
}))使用 (直接请求request里面的body就可以了,会以json格式输出)
1
2
3
4
5router.get('/', async (ctx, next) => {
ctx.body = {
"body": ctx.request.body
}
})
session 数据缓存(mongodb)
安装插件
1
$ sudo cnpm i koa-session-minimal koa-mongo-session -S
配置
config/default.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16;
module.exports = {
// port: normalizePort(process.env.PORT || '3000'),
port: parseInt(process.env.PORT, 10) || 3000,
url: 'mongodb://localhost:27017/koa-elm',
session: {
name: 'SID',
secret: 'SID',
cookie: {
httpOnly: true,
secure: false,
maxAge: 365 * 24 * 60 * 60 * 1000,
}
}
}app.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16// 配置文件
import config from './config/default'
var session = require('koa-session-minimal');
var mongoStore = require('koa-mongo-session');
app.use(session({
name: config.session.name,
secret: config.session.secret,
resave: true,
saveUninitialized: false,
cookie: config.session.cookie,
store: mongoStore({
mongo: config.url,
expiration: 1000 * 60 * 60 * 24 * 14
})
}))
- 使用
1
2
3
4router.get('/', async (ctx, next) => {
console.log(ctx.session.admin_id) // 取
ctx.session.admin_id = '2' // 存
})