koa2基础知识

=================================================================================

安装koa终端输入npm install koa --save
运行的时候是终端输入node 文件名

// import Koa from 'koa'//ES6语法
const Koa = require('koa')//只能以commonJS导入
const app = new Koa()
//结果1 3 5 6 4 2
app.use(async(ctx,next)=>{//ctx是存放上下文,next是指向下一个中间件
    ctx.body='1'
    next()//用于跳转到下一个中间件,否则会执行完当前中间件就终止
    ctx.body+='2'
})
app.use(async(ctx,next)=>{
    ctx.body+='3'
    next()
    ctx.body+='4'
})
app.use(async(ctx,next)=>{
    ctx.body+='5'
    next()
    ctx.body+='6'
})

app.listen(3000)//监听端口

中间件洋葱圈模型:
在这里插入图片描述


asnyc+await的例子:

function delay(word){
    return  new Promise((resolve,reject)=>{
        setTimeout(() => {
            resolve('hello'+word)
        }, 2000)
    })
}

// async+await是一起使用的
async function test(){//要前面加上async
    const word1=await delay('孙悟空')//函数前加上await
    console.log(word1)
    const word2=await delay('猪八戒')
    console.log(word2)
    const word3=await delay('沙悟净')
    console.log(word3)
}

test()//调用函数

koa-logger的代码:记录请求

module.exports = async(ctx,next)=>{
    const start = new Date().getTime()
    await next()
    const end = new Date().getTime()

    console.log(ctx.request.url,end-start,ctx.body.length)
}

koa-router的使用:

const koalogger = require('./koa-logger')
const Koa = require('koa')//只能以commonJS导入
const KoaRouter = require('koa-router')

const app = new Koa()
const Router = new KoaRouter()

app.use(Router.routes())
app.use(Router.allowedMethods())

Router.get('/',(ctx,next)=>{
    ctx.body='wukunyuengCoder'
})
Router.get('/dashen',(ctx,next)=>{
    ctx.body='大神Coder'
})

这两个中间件routes、allowedMethods的作用:

app.use(Router.routes()):
routes()中间件主要实现了四大功能。
1、将matched对象的path属性挂载在ctx.matched上,提供给后续的allowedMethods中间件使用。
2、将返回的dispatch函数设置router属性
3、插入一个新的路由前置处理中间件,将layer解析出来的params对象、路由别名以及捕获数组挂载在ctx上下文中
4、而对于路由匹配到众多layer,koa-router通过koa-compose进行处理

app.use(Router.allowedMethods()):
allowedMethods()中间件主要用于处理options请求
1、服务器不支持当前请求方法,返回501状态码;
2、当前请求方法为OPTIONS,返回200状态码;
3、path中的layer不支持该方法,返回405状态;
对于上述三种情况,服务器都会设置Allow响应头,返回该路由路径上支持的请求方法。

=======================================================================================

import path from ‘path’ //node自动提供的
import render from ‘koa-ejs’

ejs引擎模板:
render(app,{
root:path.join(__dirname,‘文件路径’),
layout:‘layout’,
viewExt:‘html’, //尾缀
cache:false,
debug:false
})

跳转路由index:
router.get(’/’,async ctx=>(
await ctx.render(‘index’,{
title:‘hello koa’
})
))


接收模板用<%- %>
接收值用<%= %>
接收ejs模板用<% %>


ejs语法特点:
当要遍历时需要把括号拆分,把循环得出的结果再另外包在中间:

<ul class="databaserender">
    <% databases.forEach(databaseitem=>{ %>//forEach遍历语法
    <li class="databaseitem">
                <%= databaseitem.name%>
    </li>
    <% }) %>
</ul>

=======================================================================================

koa基础配置:

const Koa=require('koa')
const KoaRouter=require('koa-router')

//实例化koa
const app=new Koa()
const router=new KoaRouter()

//配置路由
app.use(router.routes()).use(router.allowedMethods())
//设置端口
const port=process.env.port||5000
//监听端口
app.listen(port,()=>{
    console.log(`sever start on ${port}`)
})


//路由跳转
router.get('/',async ctx=>{
    ctx.body={msg:'hello koa interface'}
})

package.json:
scripts修改两个参数:

"start": "node app.js",
"nodemon": "nodemon app.js"
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值