市场上已经有很多 Node.js 的后端库和框架。我之前曾在一些小项目中使用过 Nest.js。功能全面,项目快速实施。不过,对于我的小项目来说,它的很多功能确实有点大材小用,而且封装程度很高,写代码的自由度很小。
一次偶然的机会,我在网上认识了Hono。阅读其文档后:
Hono 是一个简单的 Web 应用程序框架,类似于 Express,但没有前端。它允许您与中间件结合使用来构建更大的应用程序。以下是一些用例示例:
太好了,让我们开始学习吧。
https://hono.dev/docs/getting-started/basic
可以通过设置端口来修改端口
import { Hono } from 'hono'; const app = new Hono(); app.get('/', (c) => { return c.text('Hello Hono!'); }); export default app;
执行:
npm run dev
访问:http://localhost:8787
app.get('/', (c) => c.text('GET /')); app.post('/', (c) => c.text('POST /')); app.put('/', (c) => c.text('PUT /')); app.delete('/', (c) => c.text('DELETE /'));
const apiRoutes = app .basePath("/api") .route("/expenses", route1) .route("/", route2);
前面的basePath("/api")为所有路由添加了/api前缀。
export const route1 = new Hono() .post("/", async (c) => { return c.json({ }); });
您可以通过http://localhost:8787/api/expenses访问上述路由。
app.get('/posts/:id', (c) => { const page = c.req.query('page'); const id = c.req.param('id'); return c.text(`You want see ${page} of ${id}`); });
查看结果:http://localhost:8787/posts/1?page=12
app.put("/posts/:id{[0-9]+}", async (c) => { const data = await c.req.json(); return c.json(data); });
除了text()之外,还有json()、html()、notFound()、redirect()等多种方法可以让请求返回不同类型的数据。 html() 可以直接返回 JSX。
import { Hono } from 'hono'; const app = new Hono(); app.get('/', (c) => { return c.text('Hello Hono!'); }); export default app;
只需将文件扩展名改为.tsx,就可以直接编写JSX,非常像React。
验证器是通过zod和@hono/zod-validator实现的,用于检查客户端发送的请求是否符合指定的数据格式。
安装:yarn add zod @hono/zod-validator
例如,如果我们需要在请求中验证,客户端发送的数据格式必须是:
帐户:字符串;密码:字符串
npm run dev
从 zod 文档中了解更多信息。并且IDE可以直接为用户显示类型提示。
最后给大家介绍一个非常适合部署Hono应用的平台:Leapcell。
Leapcell 是一个无服务器平台,具有以下特点:
在文档中探索更多内容!
Leapcell Twitter:https://x.com/LeapcellHQ
以上是Hono.js:下一代 Node.js 框架的详细内容。更多信息请关注PHP中文网其他相关文章!