后记:这个最后没经常使用,目前基本上还是无脑使用
node hono这个 Web 框架了,这样用起来最舒服,尤其是 AI Agent 已经足够托管 Coding 的任务,就标记了
npmjs https://www.npmjs.com/package/h3
2024 年 1 月,周下载 301k
迷你 http 框架,为高性能准备。github https://github.com/unjs/h3
同属于 unjs 家族,是 nitro 的基础,可以类比 express,引用透明,使用和 vue3 差不多,概念容易上手。
为什么叫 h3,可以理解为 http 简称 h3。类比 k8s/i18n 等简写叫法。
快速代码
// npm i h3
import { createServer } from "node:http";
import { createApp, eventHandler, toNodeListener, 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);
createServer(toNodeListener(app)).listen(process.env.PORT || 3000);
基础介绍
感觉和 express 和 vue 很像,哈哈。
也内置了很多开箱即用的应用。
在 utilities 部分,内置了一些方法。
常见的,比如:
readBody(event)查看 body 内容getQuerygetRouterParamsgetMethodgetRequestIP- 响应体相关的
sendsetHeader和setHeaderssendStreamgetCookie
和 zod 和 typebox 结合很容易,文档 https://github.com/wobsoriano/h3-zod
直接安装 npm i zod h3-zod,细节看文档。
Helpers that throw error 400 when parsing fails:
import { zh } from 'h3-zod';
// Or
import { useSafeValidatedQuery, useSafeValidatedBody } from 'h3-zod';
export default defineEventHandler(async (event) => {
const query = zh.useValidatedQuery(event, z.object({
required: z.string()
}))
const body = await zh.useValidatedBody(event, z.object({
optional: z.string().optional(),
required: z.boolean()
}))
const params = await zh.useValidatedParams(event, {
id: z.number()
})
})
历史归档
Nuxt 里就是这样,看起来是自动拼成的服务。也内置了很多开箱即用的应用。
Comments
Comments are disabled for now.