我的网站开发技术经验总结 我的网站开发技术经验总结
首页

fangdown

我的网站开发技术经验总结
首页
  • 大前端

    • nodejs

      • nodejs有哪些全局对象,怎么用
      • 如何在nodejs中实现分页机制功能
      • 如何在nodejs实现文件上传功能
      • 如何实现nodejs鉴权机制,说一下思路
      • 说说nodejs中require的原理
      • 说说nodejs中的EventEmit是如何实现的
      • 说说nodejs中的事件循环机制理解
      • 说说nodejs中进程通信有哪些方式
      • 说说nodejs中间件是什么,如何封装一个中间件
        • 是什么
        • 怎么用
        • 原理
        • FAQ
      • 说说对buffer的理解及应用场景
      • 说说对fs模块的理解及常用方法
      • 说说对nodejs的理解及应用场景
      • 说说对process的理解及常用方法
      • 说说对stream的理解及应用场景
      • nodejs如何进行性能监控及优化
      • nodejs批量改文件名
    • git

    • CI

    • 小程序

    • docker

    • Typescript

    • webpack

    • 安全

  • 基础

  • 框架

  • 情商

  • 算法

  • 网络

  • 千锤百炼
  • 大前端
  • nodejs
fangdown
2021-08-16
目录

说说nodejs中间件是什么,如何封装一个中间件

# 是什么

在nodejs中,中间件本质是一个回调函数,参数包括了请求对象,响应对象和执行下一个中间件的next函数

foo(ctx, next)

# 怎么用

  • 日志模块
module.exports = async (ctx, next) =>{
  const startTime = Date.now()
  const requestTime = new Date()
  await next()
  const ms = Date.now() - startTime
  let logout = `${ctx.request.ip}---${requestTime} -- ${ctx.method} --${ctx.url}--${ctx.ms}ms`
  fs.appendFileSync('./log.txt', logout+'\n')
}
  • token校验
module.exports = async (ctx, next) => {
  const token = ctx.header.token
  if(token){
    try{
      await verify(token)
    }catch(err){
      throw err
    }
  }
  await next()
}

# 原理

中间件应职责单一,应有扩展性和组合性

# FAQ

#中间件
上次更新: 2021/12/19, 18:05:42
说说nodejs中进程通信有哪些方式
说说对buffer的理解及应用场景

← 说说nodejs中进程通信有哪些方式 说说对buffer的理解及应用场景→

最近更新
01
多分支修复撞车的问题
05-01
02
如何成为架构师
01-23
03
服务器部署全过程
11-23
更多文章>
Theme by Vdoing | Copyright © 2019-2026 fangdown | 粤ICP备19079809号
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式