express 链接到标题
跟springboot差不多
下面有个小案例
import express from 'express'
// 创建 express 应用实例
const app = express()
const port = 3000
// 路由,相当于后端接口。浏览器访问 localhost:3000/abc 即可展示 Hello World
app.get('/abc', (req, res) => {
res.send('Hello World!')
})
// 启动服务,监听端口 3000
app.listen(port, () => {
console.log(`Example app listening on port ${port}`)
})
app:express的实例。
METHOD:http请求方法,如 get、post、put、delete 等。
PATH: 服务器上的路径。
HANDLER: 路由处理函数,每个路由可以具有一个或多个处理程序函数,这些函数在路由匹配时执行。
express 可以提供 静态文件的访问
app.use('/static',express.static('public'));
// 例如 public/static/image/1.jpg 可以通过路径访问
// http://localhost:3000/static/image/1.jpg
app.use(express.static('files')); //把你项目中 files 这个文件夹里的所有文件(比如图片、CSS、JS、HTML、音频 / 视频等)变成「可通过 HTTP 访问的静态资源」。
KOA 链接到标题
Koa是由Express原班人马打造的一个新的web框架,旨在成为一个更小、更富有表现力、更健壯的基础上构建web应用和APIs。
首先,创建一个新的目录koa-test,并在此目录下初始化npm项目,然后安装Koa及相关工具:
mkdir koa-test
cd koa-test
npm init -y
npm i koa
npm i nodemon --save-dev
创建一个app.js
const Koa = require('koa');
const app = new Koa();
// 中间件
app.use(async ctx => {
ctx.body = 'Hello Koa';
});
// 监听3000端口
app.listen(3000, () => {
console.log('Server running at http://127.0.0.1:3000');
});
添加一个dev启动脚本:

使用Postman或任何其他API测试工具发送请求到 http://127.0.0.1:3000。你应该能看到响应:“Hello Koa”。
KOA的原理内容 链接到标题
四个核心文件 链接到标题
application.js : 创建class实例的构造函数,它继承了events,这样就会赋予框架事件监听和事件触发的能力。暴露了一些常用的api,toJSON、listen、use
context.js:对象暴露
request.js、response.js:es6的get和set的一些语法,去取headers或者设置headers、还有设置body
| 文件 | 核心作用 | 关键亮点 |
|---|---|---|
| application.js | 框架入口,提供事件能力(监听 / 触发),暴露 use/listen/toJSON 等 API | 继承 EventEmitter 实现事件 |
| request.js | 封装请求相关操作,用 ES6 get/set 简化请求头、URL 的获取 / 设置 | 只处理「请求」的读取 |
| response.js | 封装响应相关操作,用 ES6 get/set 简化响应体、状态码、响应头的设置 / 获取 | 只处理「响应」的写入 |
| context.js | 上下文,把 request/response 的属性代理到自身,简化开发者使用(ctx.xxx) | 统一入口,减少代码层级 |
Koa 的上下文对象
ctx是请求和响应对象的封装,它包含了请求查询、请求体、路由匹配、响应状态等信息。Koa 支持流式响应,可以通过
ctx.body = stream的方式发送流式数据调用
ctx.throw或返回Promise对象来正确处理错误
中间件机制 链接到标题
const app = new Koa();
app.use(async (ctx, next) => {
console.log(1);
await next();
console.log(6);
});
app.use(async (ctx, next) => {
console.log(2);
await next();
console.log(5);
});
app.use(async (ctx, next) => {
console.log(3);
await next();
console.log(4);
});
// 输出: 1 2 3 4 5 6
await next() 是「暂停当前中间件,执行下一个中间件」。而非「等待一个空 Promise」
二者的不同 链接到标题
koa2中使用了async/await,Koa.js允许你使用ES6中的Generator函数,更好的异步处理机制
Express.js更适合于构建大型的应用程序,稳定
参考博客 链接到标题
https://juejin.cn/post/6844904099876438030?searchId=202603132011583D29D35659261843E7C4##heading-10