nodejs--koa--基础

什么是框架(frame):

封装原生代码的API

规范流程和格式

让开发人员更加关注业务代码,提高开发效率

框架(frame)和库(lib)的区别:

框架是唯一的,库就可以共存

框架关注全流程,库关注单个功能

koa2的安装和使用:

初始化 npm init 

安装 npm install koa2 --save

基本使用

初体验:

前提:在项目根目录下

const Koa = require('koa');
const app = new Koa();

// ctx-->context 上下文
app.use(async(ctx) => {
    ctx.body = 'hello word';
})

app.listen(3000);

通过 node index.js在终端运行


安装koa-generator脚手架搭建项目:

  • 定位到项目根目录
  • 通过终端(如:cdm)运行:npm install -g koa-generator,可通过 koa2 --version来验证是否安装成功

  • 安装完成后,再输入  koa2 x ,便会自动创建一个以x为名的文件夹

  • 进入x文件夹里,通过 npm install 安装相关包
  • 最后可使用 npm run dev来运行该项目(前提是你已全局安装nodemon),在浏览器里通过:localhost:3000来查看

以上就是安装完成的截图


koa2中间件

什么是中间件:

一个流程上,独立的业务模块

可扩展,可插拨

类似于工厂的流水线

使用中间件的原因:

拆分业务模块,使代码清晰

统一使用中间件,使得各业务代码都规范标准

扩展性好,易添加、易删除


koa2的洋葱圈模型

中间件机制,是koa2的精髓

每个中间件丢失async函数

中间件运行的机制,就像洋葱圈模型

简易的洋葱圈模型示例:

// 演示async await执行顺序
//(代码要放在浏览器中运行)

//加载一张图片
async function getImg(url = '') {
    await fetch(url)
}

//
async function fn() {
    const url = 'https://avatar.csdnimg.cn/8/C/5/1_weixin_43285360_1620110895.jpg'
    const start = Date.now(); //记录当前时间
    await getImg(url); //调用加载图片
    const ms = Date.now() - start //计算时间差
    console.log(`加载图片花费了${ms}毫秒`)
}

// fn()

async function A() {
    console.log('A开始')
    await fn()
    console.log('A结束')
}

A()

// A fn() getImg fn() A()

 

示例代码:

// koa2中间件的洋葱圈模型

const Koa = require('koa')
const app = new Koa()

//logger ctx = req+response
app.use(async(ctx, next) => {
    await next() //先执行下一个中间件
    const rt = ctx.response.get('X-Response-Time') //这里等价于res  获取时间差
    console.log(`${ctx.method} ${ctx.url}-${rt}`)
})

//x-response-time
app.use(async(ctx, next) => {
    const start = Date.now()
    await next() //先执行下一个中间件
    const ms = Date.now() - start //计算时间差
    ctx.set('X-Response-Time', `${ms}ms`) //记录/设置时间差
})

//response
app.use(async(ctx, next) => {
    ctx.body = 'Hell word'
})

app.listen(3000)
console.log('koa已经开始监听3000端口')

 

更多请参考:koa官网

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

小白小白从不日白

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

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

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

打赏作者

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

抵扣说明:

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

余额充值