市面上已經有許多 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中文網其他相關文章!