koa 开发插件记录

前言

  • 这几天着手使用koa搭建后端服务器
  • 使用的一些插件记录下来以后方便使用
  • 使用 koa的框架所以路由等插件我也不写了
  • 有一些之前express用过的就不写了

工具/资料

开始

解决跨域问题(koa2-cors)

  • 插件轻松解决跨域问题

    1
    $ cnpm i koa2-cors -S
  • 配置(括号里面的对象可写可不写)

    1
    2
    3
    4
    5
    6
    7
    8
    9
    const 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

  1. 插件加配置解决es6烦恼(node9以上的就没有这个烦恼)

    1
    $ cnpm i babel-plugin-transform-es2015-modules-commonjs babel-register -S
  2. 配置(引入插件输出入口文件,新建start.js文件)

    1
    2
    3
    4
    5
    6
    7
    8
    require('babel-register')
    (
    {
    plugins: ['babel-plugin-transform-es2015-modules-commonjs'],
    }
    )

    module.exports = require('./www.js')
  3. 改变启动package.json文件
    koa

处理原生node还是koa都无法解析request的body(post传值解析)

  1. 安装插件

    1
    $ cnpm i koa-body koa-bodyparser -S
  2. 配置

    1
    2
    3
    4
    5
    6
    const koaBody = require('koa-body')
    const bodyparser = require('koa-bodyparser')

    app.use(koaBody()).use(bodyparser({
    enableTypes:['json', 'form', 'text']
    }))
  3. 使用 (直接请求request里面的body就可以了,会以json格式输出)

    1
    2
    3
    4
    5
    router.get('/', async (ctx, next) => {
    ctx.body = {
    "body": ctx.request.body
    }
    })

session 数据缓存(mongodb)

  1. 安装插件

    1
    $ sudo cnpm i koa-session-minimal koa-mongo-session -S
  2. 配置

  • config/default.js

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    'use strict';

    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. 使用
    1
    2
    3
    4
    router.get('/', async (ctx, next) => {
    console.log(ctx.session.admin_id) // 取
    ctx.session.admin_id = '2' // 存
    })

koa

-------------本文结束感谢您的阅读-------------
0%