koa 学习
洋葱模型
Middleware
Router
koa-router
安装
npm install koa-router
Basic Usage
1 | var Koa = require('koa'); |
Additionaly, router.all()
can be used to match against all methods.
动态路由
1 | router.get('/:id', (ctx, next) => { |
url传值
1 | router.get('/news', (ctx, next) => { |
公共数据
1 | app.use(async function (ctx) { |
ejs模板引擎
安装
npm i ejs koa-views
Usage
1 | const views = require('koa-views'); |
ejs语法
数据绑定
<%= title %>
for循环
list是绑定的数据
1 | <% for(let i; i< list.length: i++) { %> |
引入模板
1 | // public/header.ejs |
<% include public/header.ejs %>
绑定html数据
<%- html %>
获取post提交的数据
原生
1 | app.use( async ( ctx ) => { |
koa-bodyparser中间件
npm i koa-bodyparser
1 | const bodyParser = require('koa-bodyparser') |
静态资源
原生
中间件
koa-static
1 | const Koa = require('koa') |
art-template模板引擎
- 速度极快
- 支持ejs语法
安装
npm install --save art-template koa-art-template
Usage
1 | const Koa = require('koa'); |
syntax
cookie
使用方法
koa提供了从上下文直接读取、写入cookie的方法
- ctx.cookies.get(name, [options]) 读取上下文请求中的cookie
- ctx.cookies.set(name, value, [options]) 在上下文中写入cookie
koa2 中操作的cookies是使用了npm的cookies模块,源码在https://github.com/pillarjs/cookies,所以在读写cookie的使用参数与该模块的使用一致。
例子代码
1 | const Koa = require('koa') |
session
koa2原生功能只提供了cookie的操作,但是没有提供session操作。session就只用自己实现或者通过第三方中间件实现。在koa2中实现session的方案有一下几种
- 如果session数据量很小,可以直接存在内存中
- 如果session数据量很大,则需要存储介质存放session数据
数据库存储方案
- 将session存放在MySQL数据库中
- 需要用到中间件
- koa-session-minimal 适用于koa2 的session中间件,提供存储介质的读写接口 。
- koa-mysql-session 为koa-session-minimal中间件提供MySQL数据库的session数据读写操作。
- 将sessionId和对应的数据存到数据库
- 将数据库的存储的sessionId存到页面的cookie中
- 根据cookie的sessionId去获取对于的session信息
例子代码
1 | const Koa = require('koa') |
验证码
npm install --save svg-captcha
Usage
1 | var svgCaptcha = require('svg-captcha'); |
with express
1 | var svgCaptcha = require('svg-captcha'); |
with koa
1 | const captcha = svgCaptcha.create({ |