首页 > 编程语言 >Node.js 系列教程之 Koa

Node.js 系列教程之 Koa

时间:2024-12-12 11:14:30浏览次数:5  
标签:Node Koa 中间件 js koa Context 原理 实现

Node.js 系列教程之 Koa

https://www.bilibili.com/video/BV1W64y1h7qi 1

01 Koa介绍

Koa 是一个新的 web 框架,由 Express 幕后的原班人马打造,致力于成为 web 应用和API开发领域中的一个更小、更富有表现力、更健壮的基石。
官网:https://koajs.com/
GitHub仓库:https://github.com/koajs/koa一个翻译的中文网:https://koa.bootcss.com/
Koa的原理和内部结构很像Express,但是语法和内部结构进行了升级Koa内部使用ES6编写,号称是下一代Node.js Web框架它的主要特点是通过利用 async函数,帮你丢弃回调函数
Koa 1 是基于 ES2015 中的 Generator 生成器函数结合 CO 模块Koa 2 完全抛弃了 Generator 和 co,升级为了 ES2017 中的 async/await 函数

o Koa 2元王地弃J Generator和 co,开级为J ES201/中的 async/awalt函数l正式由于 Koa 内部基于最新的异步处理方式,所以使用 Koa 处理异常更加简单Koa中提供了CTX上下文对象
Express 是扩展了 req 和 res Koa 并没有捆绑任何中间件,而是提供了一套优雅的方法,帮助您快速而愉快地编写服务端应用程序。
有很多开发工具/框架都是基于 Koa 的

有很多开发工具/框架都是基于 Koa 的
Egg.js
构建工具 Vite
Koa vs Express
个人评价

个人评价
koa 2 好用,设计上的确有优势。优势不在能实现更强的功能,而是可以更简单地完成功能。
o koa 2 社区远不如 express koa 1 在思想上与 koa 2 是一致的,但是 koa 2 的实现更漂亮

awesome-koa

02 Koa基本使用

03 Koa中的Context上下文对象

上下文(Context)
Koa Context将 node的request和response对象封装到单个对象中,为编写 Web 应用程序和 API 提供了许多有用的方法。这些操作在 HTTP 服务器开发中频繁使用,它们被添加到此级别而不是更高级别的框架,这将强制中间件重新实现此通用功能。
-每个-请求都将创建一个 Context,并在中间件中作为接收器引用,或者ctx 标识符,如以下代码片段所示:

04 Koa中的路由

ctx.path if 判断 用路由插件就简单

05 Koa中的静态资源托管

静态资源托管
如果网站提供静态资源(图片、字体、样式表、脚本…..),为它们一个个写路由就很麻烦,也没必要。koa-static 模块封装了这部分的请求。
1、安装
1 npm install koa-static

koa-mount 结合 虚拟路径

06 Koa中的路由重定向

ctx.redirect('/home)

07 Koa中的中间件执行栈结构

Koa 中间件
Logger 功能
Koa 的最大特色,也是最重要的一个设计,就是中间件(middleware)。为了理解中间件,我们先看一下Logger(打印日志)功能的实现。

洋葱模型 reuest /response

前先 next() 后最后

先进后出 stack结构

08 Koa中的异步中间件

Koa 的中间件
中间件执行栈结构(洋葱模型)
异步中间件

加async

const util = require('util')

util.promisify(fs.readfile) to promise

app.use(async())

09 Koa中的中间件合并处理

koajs / compose

app.use 里面try

10 Koa的中间件异常处理

ctx.app.emit('error') 触发

app.on('error',()) 监听

11 Koa中的异常处理

12 Koa实现原理-源码目录结构

13 Koa实现原理-基础结构
14 Koa实现原理-中间件

一个应用类 监听端口 use 回调方法

15 Koa实现原理-分析Context对象的内容组成
16 Koa实现原理-初始化Context上下文对象
17 Koa实现原理-扩展Request和Response

18 Koa实现原理-处理Context中的代理别名

用object.definepro.../proxy

19 Koa实现原理-设置和发送body数据
20 Koa实现原理-处理body数据格式

标签:Node,Koa,中间件,js,koa,Context,原理,实现
From: https://www.cnblogs.com/KooTeam/p/18601993

相关文章

  • Egg.js入门视频教程 - 200分钟学会Egg.js框架 掌握全栈开发( 完结)
    Egg.js入门视频教程-200分钟学会Egg.js框架掌握全栈开发(完结)https://www.bilibili.com/video/BV1s3411C71V 101.课程介绍和Egg.js开发环境搭建Egg.js的语法仍然是JavaScript。也就是说,你不用再学习Golang或者Java这样的基础语言了。而是只要学习Egg.js的框架API,就可以快......
  • Nodejs 从入门到进阶
    9:252020/4/263年前的视频以下是Node可以实现的工作:(仅作了解)Web服务器命令行工具网络爬虫桌面应用程序开发(Electron)app嵌入式游戏交互模式(repl模式)仅作了解cmd三、Nvm的安装和初步使用从上一节我们知道,NodeJS有太多的版本了,切记,并不是新版本一出现,旧的版本就不......
  • 2023 最新 Node.js 系列教程之 Express
    2023最新Node.js系列教程之Expresshttps://www.bilibili.com/video/BV1yN4y1S7xU 1课件:https://www.yuque.com/u295415/xbahyh/qkxc1d7qm2qbezkh?singleDoc#《express搭建后端服务》https://www.yuque.com/u295415/xbahyh/wq9ktxzsnt9ov8e6?singleDoc#《Express中间件》......
  • 【Nestjs实战】Nodejs必学框架 | Nest企业级项目构建与开发实战
    【Nestjs实战】Nodejs必学框架|Nest企业级项目构建与开发实战https://www.bilibili.com/video/BV1bQ4y1A77L 1nestjs框架介绍与本视频学习指导创建nestjs工程与概念浅析f控制器(controller)集成swaggerapi文档自定义logger中间件(middleware)异常过滤器(exceptionfilter)参......
  • Node+Koa2从零搭建通用API服务
    【杰哥课堂】-项目实战-Node+Koa2从零搭建通用API服务https://www.bilibili.com/video/BV13A411w79h 1source:https://github.com/jj112358/node-api01-项目初始化02-项目的基础搭建03-项目的基本优化(自动重启_配置文件)yarnadddotenv1将http服务和app业务拆分srcappc......
  • nestjs从入门到弃坑
    nestjs从入门到弃坑https://www.bilibili.com/video/BV1am4y1d71A 11.引言2.初始化项目3.控制器和路由(上)4.控制器和路由(下)5.提供者就是依赖注入防止hack数据传输对象(DTO)(DataTransferObject),是一种设计模式之间传输数据的软件应用系统。数据传输目标往往是数据访问对......
  • Node.js框架之NestJS从入门到实战必学从入门到实战必学教程
    Node.js框架之NestJS从入门到实战必学从入门到实战必学教程https://www.bilibili.com/video/BV1btU7YtE5M 4 820241-1课程介绍imoocbilibil一手:666java.com如今的前端变得复杂第一阶段HTMLCSSJS第二阶段JQueryBootstrap第三阶段AugularVueReact第四阶段大型SP......
  • node.js毕设宠物在线管理系统程序+论文
    本系统(程序+源码+数据库+调试部署+开发环境)带文档lw万字以上,文末可获取源码系统程序文件列表开题报告内容一、选题背景关于宠物管理系统的研究,现有研究主要以宠物领养管理、宠物医院管理等为主,专门针对宠物在线综合管理(涵盖店长、用户、员工、宠物信息、用户宠物、宠物咨......
  • Next.js 14 实战:使用 App Router 构建高性能 React 应用
    "你们的网站加载速度太慢了,而且SEO效果很差。"上个月,我们接到了一个来自海外客户的紧急需求。他们的电商网站是用传统的ReactSPA构建的,在性能和搜索引擎优化方面都遇到了瓶颈。作为技术负责人,我立刻想到了Next.js14的AppRouter。......
  • HTML5+CSS3+JS制作电影主题网页(内附源码,含5个页面)
    一、页面结构1.顶部导航栏固定在页面顶部的导航栏,包含网站Logo、搜索框、首页、影视库、剧评、个人中心等导航链接,以及登录/注册按钮2.主横幅轮播区大型轮播横幅,展示热门电影和剧集的海报,配合简短介绍和'立即观看'按钮3.快捷分类导航横向滚动的分类菜单,包含电影、电视......