网站首页 > 文章精选 正文
大家好,很高兴又见面了,我是"高级前端进阶",由我带着大家一起关注前端前沿、深入前端底层技术,大家一起进步,也欢迎大家关注、点赞、收藏、转发,您的支持是我不断创作的动力。
什么是 H3
H3(发音为 /etθri/,如 h-3)是一个为高性能和可移植性而构建的最小 h(ttp) 框架。有以下显著特点:
- 便携:在 Serverless、Workers 和 Node.js 中完美运行
- 体积小:体积小支持 tree-shakable
- 现代:原生 Promise 支持
- 可扩展:附带一组可组合实用程序,但可以扩展
- 原生支持 Router:使用 unjs/radix3 进行超快速路由匹配
- 兼容性好:与 node/connect/express 中间件的兼容层
值得一提的是,H3 有一个可组合实用程序的概念,接受 event(来自 eventHandler((event) => {}))作为其第一个参数。 与将其注入 Node.js 框架(例如: Express)中常用的全局中间件中的事件或应用程序实例相比,具有多个性能优势。
可组合实用程序的概念意味着仅执行和打包所需的代码,其余实用程序在不使用时可以进行 Tree-Shaking。
目前 H3 在 Github 上通过 MIT 协议开源,有超过 2.4k 的 star、95.8k 的项目使用量、代码贡献者 60+,是一个值得关注的前端开源项目。
如何使用 H3
下面是使用 H3 的简单 hello world 示例:
import { createServer } from 'node:http';
import { createApp, eventHandler, toNodeListener } from 'h3';
const app = createApp();
app.use(
'/',
eventHandler(() => 'Hello world!')
);
createServer(toNodeListener(app)).listen(process.env.PORT || 3000);
也可以使用 listen(优雅的 HTTP 监听器) 作为 H3 优雅监听器的示例:
import { createApp, eventHandler, toNodeListener } from 'h3';
import { listen } from 'listhen';
const app = createApp();
app.use(
'/',
eventHandler(() => 'Hello world!')
);
listen(toNodeListener(app));
h3 创建的 app 实例使用中间件堆栈,能够匹配路由前缀并应用匹配的中间件。
如果,要选择使用更高级、更方便的路由系统,可以创建一个路由实例并将其注册到应用程序实例中。
import { createApp, eventHandler, createRouter } from 'h3';
const app = createApp();
const router = createRouter()
.get(
'/',
eventHandler(() => 'Hello World!')
)
.get(
'/hello/:name',
eventHandler((event) => `Hello ${event.context.params.name}!`)
);
app.use(router);
H3 可以使用不同的方法多次注册同一条路由,路由内部存储在 Radix Tree 中,并使用 unjs/radix3 进行匹配。
参考资料
https://github.com/unjs/h3
https://github.com/unjs/listhen
https://github.com/expressjs/express
https://dev.to/pankajkumar/how-to-setup-a-simple-http-server-local-web-server-with-nodejs-4fi4
猜你喜欢
- 2025-06-10 第五天快http头部信息注入cooik(http 头部信息)
- 2025-06-10 HttpUrlConnection发送url请求(后台springmvc)
- 2025-06-10 你看过的动画片没有一个能逃过这10大定律,不信来试试
- 2025-06-10 如何给你的网站申请一个免费SSL,让HTTP变HTTPS
- 2025-06-10 前端常见面试 - 请求篇(前端面试经典问题)
- 2025-06-10 地球的关键瞬间(地球的k)
- 2025-06-10 09《Nginx 入门教程》Nginx 的 Http 模块介绍(下)
- 2025-06-10 使用Python并发执行HTTP请求(python并发处理)
- 2025-06-10 HTTP 响应状态码你知道多少?(http响应状态码的含义)
- 2025-06-10 Python3 新一代Http请求库Httpx使用(详情版)
- 最近发表
- 标签列表
-
- newcoder (56)
- 字符串的长度是指 (45)
- drawcontours()参数说明 (60)
- unsignedshortint (59)
- postman并发请求 (47)
- python列表删除 (50)
- 左程云什么水平 (56)
- 计算机网络的拓扑结构是指() (45)
- 编程题 (64)
- postgresql默认端口 (66)
- 数据库的概念模型独立于 (48)
- 产生系统死锁的原因可能是由于 (51)
- 数据库中只存放视图的 (62)
- 在vi中退出不保存的命令是 (53)
- 哪个命令可以将普通用户转换成超级用户 (49)
- noscript标签的作用 (48)
- 联合利华网申 (49)
- swagger和postman (46)
- 结构化程序设计主要强调 (53)
- 172.1 (57)
- apipostwebsocket (47)
- 唯品会后台 (61)
- 简历助手 (56)
- offshow (61)
- mysql数据库面试题 (57)