koa框架和mongodb数据库,一小时快速入门和直击实战【详细解读,建议收藏】

koa

要求:nodejs的版本要高于7.6,因为 Node.js 7.6 版本 开始完全支持 async/await,所以才能完全支持我们的 Koa

npm i koa -S

使用

const Koa = require('koa');
const app = new Koa();
// ctx是上下文,其中包含了request和response
app.use(async ctx => {
   
  ctx.body = 'Hello World';
});

app.listen(3000);

注意:在koa中的app引用,只有use方法可以用来处理路由,没有请求动词方法,例如:app.get()这样会报错。

async/await和promise的使用

async用于修饰函数,放在函数声明的前面,将其后的函数的返回值封装成一个 Promise 对象

例:在终端中执行以下代码

async function testAsync(){
   
    return 'Hello async';
};
const result = testAsync();
console.log(result); // Promise { 'Hello async' }

await必须在async方法中才可以使用,表示等待。等待的只是一个表达式,官方文档中说的是promise对象,其实他也可以接收普通的值。如果这个普通的值是一个函数的话,就等待这个函数的返回值。

例:

function getData() {
   
    return 'This is data';
};
async function testAsync() {
   
    return 'Hello async';
};
async function test() {
   
    // await 返回普通值
    const v1 = await getData();
    console.log(v1);
    // This is data
 
    // await 返回promise对象
    const v2 = await testAsync();
    console.log(v2);
    // Hello async
};
test();

路由

koa中要处理路由就需要使用路由模块来处理:

npm i koa-router -S

路由使用:

const Koa = require('koa')
const koaRouter = require('koa-router') // 导入路由
const router = new koaRouter() // 实例化路由
const app = new Koa()
router.get('/',(ctx,next)=>{
   
    ctx.body = "hello"
})

router.get('/news',(ctx,next)=>{
   
    ctx.body = '新闻页面'
})

app.use(router.routes()) // 启动路由 - 让路由生效
app.use(router.allowedMethods()) // 如果之前的没有设置响应头,配置此选项以后可以自动设置响应头 - 可加可不加(错误的时候会自动响应响应头)

app.listen(3000)

其中的导入路由和实例化路由可以合成一行:

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

路由处理中回调函数的next表示,让这个路由继续向下匹配处理。

路由执行顺序遵循洋葱圈模型:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rL2cRDeK-1625882327725)(media/1624684612952.png)]

例:

ar Koa = require('koa');
var router = require('koa-router')();
var app = new Koa();
 
app.use(async (ctx, next) => {
   
    console.log('1.这是一个中间件01');
    await next();
    console.log('5.匹配完路由以后又会返回来执行中间件')
});
app.use(async (ctx, next) => {
   
    console.log('2.这是一个中间件02');
    await next();
    console.log('4.匹配完路由以后又会返回来执行中间件')
});                   
router.get('/news', async (
  • 10
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 8
    评论
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

贪吃ღ大魔王

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值