本文共 4199 字,大约阅读时间需要 13 分钟。
目录
一、koa-bodyparser二、koa-router三、koa-views + ejs四、koa-static五、koa-session六、koa-jwt七、koa-helmet八、koa-compress九、koa-logger十、koa-convert十一、koa-compose十二、koa-http-request十三、koa-conditional-get十四、koa-csrf十五、koa-ejs十六、koa-etag十七、koa-favicon十八、koa-generic-session十九、koa-onerror二十、koa-redis二十一、koa-resource-router二十二、koa-rewrite二十三、koa-rt二十四、koa-safe-jsonp二十五、koa-static-cache
系列教程
1、功能:解析请求体
2、
3、代码实现
const Koa = require('koa');const app = new Koa();const bodyParser = require('koa-bodyparser'); app.use(bodyParser()); app.use(async(ctx)=>{ if(ctx.url === '/' && ctx.method === 'GET'){ //显示表单页面 let html=``; ctx.body=html; }else if(ctx.url === '/' && ctx.method === 'POST'){ let postData = ctx.request.body; ctx.body = postData; }else{ ctx.body = 'Koa2 request POST
1、功能:路由
2、
3、基础格式
const Koa = require('koa');const Router = require('koa-router'); const app = new Koa();const router = new Router(); //实现 '/'、'/koa'两个路由层级router .get('/',(ctx,next)=>{ ctx.body="Index page"; }) .get('/koa',(ctx,next)=>{ ctx.body="Koa page"; }); app .use(router.routes()) .use(router.allowedMethods()); app.listen(3000,()=>{ console.log('starting at port 3000');});
4、路由层级
(1)全局层级
//所有路由必须加上一个tony父层级,才能被访问const router = new Router({ prefix: '/tony'})
(2)局部层级
const Koa = require('koa');const app = new Koa();const Router = require('koa-router');//实现'/home'、'/page'两个子路由层级,以及各自的两个孙子路由层级//子路由let home = new Router();home .get('/',async(ctx)=>{ ctx.body="Home"; }) .get('/one',async(ctx)=>{ ctx.body="Home one"; }) .get('/two',async(ctx)=>{ ctx.body ='Home two'; })let page = new Router();page .get('/',async(ctx)=>{ ctx.body="Page"; }) .get('/one',async(ctx)=>{ ctx.body="Page one"; }) .get('/two',async(ctx)=>{ ctx.body ='Page two'; })//总路由,装载子路由let router = new Router();router.use('/home',home.routes(),home.allowedMethods());router.use('/page',page.routes(),page.allowedMethods());//加载路由中间件app.use(router.routes()).use(router.allowedMethods());app.listen(3000,()=>{ console.log('[demo] server is starting at port 3000');});
1、功能:视图模板渲染
2、 &&
3、在根目录下,新建views文件夹,并添加index.ejs
<%=title%> <%=title%>
4、代码实现
const Koa = require('koa')const views = require('koa-views')const path = require('path')const app = new Koa()// 定位模板文件目录,并选择模板引擎app.use(views(path.join(__dirname, './views'), { extension: 'ejs'}))app.use( async ( ctx ) => { let title = 'hello koa2' //渲染index.ejs,并传入title变量 await ctx.render('index', { title })})app.listen(3000,()=>{ console.log('[demo] server is starting at port 3000');})
1、功能:处理静态资源
2、
3、代码实现
const Koa = require('koa')const path = require('path')const static = require('koa-static')const app = new Koa()const staticPath = './static'//即可直接通过'./static',访问到静态资源app.use(static( path.join(__dirname, staticPath)))app.use( async ( ctx ) => { ctx.body = 'hello world'})app.listen(3000, () => { console.log('[demo] static-use-middleware is starting at port 3000')})
1、功能:session验证
2、
1、功能:token验证
2、
1、功能:网络安全
2、
1、功能:压缩响应体
2、
1、功能:输出请求日志
2、
1、功能:旧中间件(基于generate)、新中间件(基于promise)之间的互相转换
2、
1、功能:合并中间件
2、
1、功能:
2、
1、功能:
2、
1、功能:
2、
1、功能:
2、
1、功能:
2、
1、功能:
2、
1、功能:
2、
1、功能:
2、
1、功能:
2、
1、功能:
2、
1、功能:
2、
1、功能:
2、
1、功能:
2、
1、功能:
2、
回到koa-bodyparser
回到koa-router
回到koa-views + ejs
回到koa-static