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表示,让这个路由继续向下匹配处理。

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

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

例:

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 (

你可能感兴趣的:(总结,koa,中间件,javascript,mongodb,原力计划)