Node框架 【Koa】介绍、安装以及使用

news2024/11/27 8:22:50

文章目录

  • 🌟前言
  • 🌟介绍
  • 🌟koa优势
  • 🌟洋葱模型
  • 🌟安装
    • 🌟具体步骤:
      • 🌟创建项目目录
      • 🌟初始化项目
      • 🌟进入目录,安装koa
  • 🌟使用
  • 🌟案例
    • 🌟1. 创建项目目录
    • 🌟2. 初始化项目
    • 🌟3. 进入目录,安装koa
    • 🌟4. 创建app.js
    • 🌟5. 启动项目
    • 🌟6. 浏览器访问
  • 🌟写在最后

在这里插入图片描述

🌟前言

哈喽小伙伴们,新的专栏 Node 已开启;这个专栏里边会收录一些Node的基础知识和项目实战;今天我们带领大家初识一下 Node的另一个框架 Koa ;让我们一起来看看吧🤘

🌟介绍

koa2是由 Express 原班人马打造的,致力于成为一个更小、更富有表现力、更健壮的 Web 框架。 使用 koa 编写 web 应用,可以免除重复繁琐的回调函数嵌套, 并极大地提升错误处理的效率。koa 不在内核方法中绑定任何中间件, 它仅仅提供了一个轻量优雅的函数库,使得编写 Web 应用变得得心应手。开发思路和express差不多,最大的特点就是可以避免异步嵌套。

koa2利用ES7async/await特性,极大的解决了我们在做nodejs开发的时候异步给我们带来的烦恼。

koa2的源码只有四个文件,500行左右。只提供封装好http上下文请求响应,以及基于async/await的中间件调用机制。

🌟koa优势

  • 更轻量、更健壮、更富有表现力;
  • 利用async/await函数,免除重复繁琐的回调函数嵌套;
  • 增强了错误处理;
  • 轻量、优雅,仅提供web服务最基础的函数库;
  • 通过中间件扩展实现不同的高级需求;

很多企业级框架如360thinkjs,阿里的egg.js全部基于koa2开发。

🌟洋葱模型

koa2中间件是基于async/await实现的,其执行过程是通过next来驱动的,于是,koa2就有了一个特殊的执行顺序,我们为这种执行顺序设定了一个模型叫–洋葱模型

在这里插入图片描述在这里插入图片描述

在开发中,中间件可能会存在多个,如上图所示,存在三层中间件,这三层中间件在处理请求的过程中它的调用顺序为:

  • 一个请求到达Koa搭建Web服务器,先经过第一层中间件(紫色)由它进行请求的处理,完成后进入下一层中间件(红色)
  • 当请求进入第二层中间件(红色)由它进行请求的处理,完成后进入下一层中间件(橙色)
  • 当请求进入第三层中间件(橙色)由它进行请求的处理,其内部没有中间件,执行完所有逻辑后,该请求再次进入第二层中间件(红色)
  • 在第二层中间件可以再次对请求进行处理,执行完所有逻辑后,再次进入第一层中间件(紫色)
  • 在第一层中间件可以再次对请求进行处理,执行完所有逻辑后,最终返回响应结果

这个调用顺序就是洋葱模型, 中间件对请求的处理是一种先进后出的顺序,请求最先到达第一层中间件,而最后也是第一层中间件对请求再次处理了,最终返回结果。

🌟安装

npm install koa --save

🌟具体步骤:

🌟创建项目目录

mkdir test

🌟初始化项目

npm init

🌟进入目录,安装koa

cd test
npm install koa --save

🌟使用

在项目根目录创建app.js,并添加以下代码:

var koa = require('koa');
var app = new koa();

🌟案例

🌟1. 创建项目目录

mkdir test

🌟2. 初始化项目

npm init

🌟3. 进入目录,安装koa

cd test
npm install koa --save

🌟4. 创建app.js

在项目根目录创建app.js,并添加以下代码:

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

app.use( async ( ctx ) => {
  ctx.body = 'hello koa2'
})

app.listen(3000)

🌟5. 启动项目

node app.js

🌟6. 浏览器访问

在浏览器访问http:localhost:3000,效果如下

在这里插入图片描述

🌟写在最后

更多Node知识以及API请大家持续关注,尽请期待。各位小伙伴让我们 let’s be prepared at all times!

✨原创不易,还希望各位大佬支持一下!
👍 点赞,你的认可是我创作的动力!
⭐️ 收藏,你的青睐是我努力的方向!
✏️ 评论,你的意见是我进步的财富!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/471274.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C++STL详解(十一)-- 位图(bitset)

文章目录 位图的介绍位图的引入位图的概念位图的应用 位图的使用位图的定义位图的成员函数位图运算符的使用 位图的模拟实现成员函数构造函数set reset testflip,size,countnone,any,all 位图应用题扩展位图模拟实现代码 位图的介绍 位图的引入 有一道面试题: 给40亿个不重复…

QFIELD-GIS工具 定位功能使用方法

一、 简介 定位是一款GIS APP重要功能,可以帮助我们快速在地图上找到现在所处的位置。结合地图我们就可以快速了解我们所处环境的情况。同时可以利用APP的信息标注采集功能采集当前位置的信息到数据库中。 下面我们来介绍【QFIELD-GIS】如何进行GPS定位、如何…

平衡二叉树的实现(包含旋转)

平衡二叉树是子啊二叉排序树的基础上建立的,他的概念就是这棵树中的任意节点的平衡因子都必须要大于1或是小于-1。平衡因子就是这个节点的左子树高度减右子树高度所得到的差。那么,它有什么优点呢?为什要在二叉排序树的基础上来建立这个平衡二…

语音芯片排行榜,为何唯创知音WT588F语音芯片如此受欢迎

随着智能家居、智能玩具、智能机器人等领域的快速发展,语音芯片逐渐成为智能硬件的重要组成部分。在众多语音芯片中,唯创知音WT588F语音芯片备受关注,成为市场上备受欢迎的产品。那么,WT588F语音芯片具备哪些功能,为何…

您的云,您做主:Google Distributed Cloud Hosted 全面可用

近日,谷歌宣布Google 分布式云(GDC) 托管的全面可用性来扩展该产品组合,它支持具有最严格要求的客户的需求,包括机密、受限和绝密数据。 GDC Hosted 包括部署、操作、扩展和保护完整托管云所需的硬件、软件、本地控制平面和操作工具。此外&…

【高危】MySQL Server拒绝服务漏洞(CVE-2023-21912)

漏洞描述 MySQL是Oracle开源的关系型数据库管理系统。 MySQL Server 受影响版本存在拒绝服务漏洞,攻击者者无需身份验证可发送连接数据包导致MySQL Server 崩溃拒绝服务。官方未公布相关细节,可能由于对客户端设置字符集的处理不当,当客户端…

关于倾斜摄影超大场景的三维模型轻量化中的数据质量优化方法浅析

关于倾斜摄影超大场景的三维模型轻量化中的数据质量优化方法浅析 倾斜摄影超大场景的三维模型轻量化处理需要兼顾数据大小和渲染性能,同时保证模型的准确性和真实感。为了提高轻量化质量,可以从以下方面入手: 1、选择合适的轻量化算法和参数…

OpenCV实战5 车牌号识别

原文在这里,参考这个进行了改进 感觉学到了很多东西,便在这里作下笔记。 效果: 目录 一、知识点学习: 1. fstream 2. 形态学开操作与形态闭操作 2.1 第一个角度:消除较小的联通区域 vs 弥合较小的联通区域 2.2 第二个角度&…

【LeetCode】222.完全二叉树的节点数

1.问题 给你一棵 完全二叉树 的根节点 root ,求出该树的节点个数。 完全二叉树 的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位…

【MySQL】存放页面的大池子——InnoDB的表空间

1 前置知识回顾 1.1 页面类型 InnoDB是以页为单位管理存储空间的。我们的聚簇索引(也就是完整的表数据)和其他的二级索引都是以B树的形式保存到表空间中,而B树中的节点就是数据页,这个数据页的类型名其实是 FIL_PAGE_INDEX。 除…

JS手撕代码系列【手写实现Promise.all】

Promise.all() 方法接收一个 Promise 对象数组作为参数,返回一个新的 Promise 对象。该 Promise 对象在所有的 Promise 对象都成功时才会成功,其中一个 Promise 对象失败时,则该 Promise 对象立即失败。 本篇博客将手写实现 Promise.all() 方…

初始 Ajax

文章目录 一、服务器的基本概念1、客户端与服务器2、url地址3、客户端与服务器的通信过程4、服务器对外提供资源5、资源的请求方式 二、初始 Ajax1、了解Ajax2、JQuery中的Ajax(1)$.get()函数的用法(2)$.post()函数的语法&#xf…

国民技术N32G430开发笔记(7)- Gpio EXTI中断的使用

GPIO EXTI中断的使用 1、N32G430C8L7_STB板卡带有三个用户按键,我们初始化key1 key2 按键,当按键按下时,在中断处理函数里输出我们的打印信息。 2、根据芯片手册上N32G430C8L7有24 条中断线,16条分配给GPIO使用,其余八…

中国移动发布COCA软硬一体片上计算架构,引领云计算市场下一个黄金十年

当前,数字经济发展已经成为改变全球竞争格局的关键力量,随着算力成为数字经济新引擎,算力规模持续增长,算力结构发生改变。主动拥抱智算浪潮,持续输出优质算力支撑数字中国建设,适配泛在化、异构化算力推动…

JavaWeb之过滤器Filter(通俗易懂版)

今天开发遇到了,简单记录一下! 简介:Filter是JavaWeb三大组件之一(Servlet程序、Listener监听器、Filter过滤器) 作用:既可以对请求进行拦截,也可以对响应进行处理。 1、Filter中的三个方法 …

【无标题】c++异常机制的一些总结以及思考

在谈及c处理异常机制的方法之前我们不妨来回顾一下c语言是如何应对这块的。 终止程序,如assert,缺陷:用户难以接受。如发生内存错误,除0错误时就会终止程序。 返回错误码,缺陷:需要程序员自己去查找对应的…

深兰科技再获欧洲订单,中国造智能机器人出海“服务”西班牙

近日,经过包含关键技术、场景适配性、任务完成效率、产品操作便捷度等考核标准在内多轮综合对比,深兰科技突出重围,斩获西班牙一笔价值百万的智能室内清洁机器人采购订单。 多重问题显示,欧洲清洁市场亟待科技赋能 在当前的经济形…

VUE初级知识点总结

前言 近几年随着HTML5的普及,原来的jsp逐渐在被淘汰,而vue成了很多前端开发者的心仪的js框架,因为它相对于其他两大框架(Angula、React)更简单易学,当然了这里的简单易学指的是上手快,在不知道…

7.3 股票分析(project)

目录 第1关:涨幅和成交量 第2关 涨幅与最高价 第3关 跌幅与最低价 本关任务:完成涨幅和成交量股票分析。 相关知识 1.sorted()函数 2.集合运算 sorted()函数 sorted() 函数对所有可迭代的对象进行排序操作。 sorted(iterable, keyNone, reverseFal…

Linxu下性能指标采集工具之nmon工具的使用

前言 近期在测试JefLogTail,由于JefLogTail使用的是轮询的方式来监听文件夹,所以对cpu的消耗可能会高一些,所以在测试的时候着重关注CPU,Linux下查看CPU信息一般采用top命令来实时观察,但是这种对于只是通过观察数据的变化来评估…