博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Koa2教程(常用中间件篇)
阅读量:4082 次
发布时间:2019-05-25

本文共 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

系列教程


一、koa-bodyparser

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=`            

Koa2 request POST

userName

age

`; ctx.body=html; }else if(ctx.url === '/' && ctx.method === 'POST'){ let postData = ctx.request.body; ctx.body = postData; }else{ ctx.body = '

404!

'; }});app.listen(3000, () => { console.log('[demo] server is starting at port 3000');});

二、koa-router

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');});

三、koa-views + ejs

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');})

四、koa-static

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')})

五、koa-session

1、功能:session验证

2、


六、koa-jwt

1、功能:token验证

2、


七、koa-helmet

1、功能:网络安全

2、


八、koa-compress

1、功能:压缩响应体

2、


九、koa-logger

1、功能:输出请求日志

2、


十、koa-convert

1、功能:旧中间件(基于generate)、新中间件(基于promise)之间的互相转换

2、


十一、koa-compose

1、功能:合并中间件

2、


十二、koa-http-request

1、功能:

2、


十三、koa-conditional-get

1、功能:

2、


十四、koa-csrf

1、功能:

2、


十五、koa-ejs

1、功能:

2、


十六、koa-etag

1、功能:

2、


十七、koa-favicon

1、功能:

2、


十八、koa-generic-session

1、功能:

2、


十九、koa-onerror

1、功能:

2、


二十、koa-redis

1、功能:

2、


二十一、koa-resource-router

1、功能:

2、


二十二、koa-rewrite

1、功能:

2、


二十三、koa-rt

1、功能:

2、


二十四、koa-safe-jsonp

1、功能:

2、


二十五、koa-static-cache

1、功能:

2、


  1. 回到koa-bodyparser

  2. 回到koa-router

  3. 回到koa-views + ejs

  4. 回到koa-static

作者:简栋梁
链接:https://www.jianshu.com/p/f69852835699
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

你可能感兴趣的文章
现在明白为什么无名博客里好几篇文章在讲传感器的滞后
查看>>
实际我看Pixhawk定高模式其实也是飞得很稳,飘得也不厉害
查看>>
Pixhawk解锁常见错误
查看>>
C++的模板化等等的确实比C用起来方便多了
查看>>
ROS是不是可以理解成一个虚拟机,就是操作系统之上的操作系统
查看>>
用STL algorithm轻松解决几道算法面试题
查看>>
ACfly之所以不怕炸机因为它觉得某个传感器数据不安全就立马不用了
查看>>
我发觉,不管是弄ROS OPENCV T265二次开发 SDK开发 caffe PX4 都是用的C++
查看>>
ROS的安装(包含文字和视频教程,我的ROS安装教程以这篇为准)
查看>>
国内有个码云,gitee
查看>>
原来我之前一直用的APM固件....现在很多东西明白了。
查看>>
realsense-ros里里程计相关代码
查看>>
似乎写个ROS功能包并不难,你会订阅话题发布话题,加点逻辑处理,就可以写一些基础的ROS功能包了。
查看>>
if __name__ == ‘__main__‘:就是Python里的main函数,脚本从这里开始执行,如果没有main函数则从上到下顺序执行。
查看>>
PX4官方用户和开发手册的首页面是会给你选择英文和中文的
查看>>
网络协议栈我是不是可以这么理解,就是把你要发送的数据自动处理成TCPIP格式的消息发出去,这种底层的转换不需要你弄了。
查看>>
除了LwIP还有uIP
查看>>
《跟工程师学嵌入式开发》这本书最后的终极项目我反而觉得有说头
查看>>
博士的申请考核制
查看>>
那些硬件的初始化函数主要是在做些上什么?
查看>>