首頁 >web前端 >js教程 >Hono.js:下一代 Node.js 框架

Hono.js:下一代 Node.js 框架

Barbara Streisand
Barbara Streisand原創
2025-01-06 22:33:42338瀏覽

Hono.js: The Next-Gen Node.js Framework

為什麼要學Hono

Hono.js: The Next-Gen Node.js Framework

市面上已經有許多 Node.js 的後端函式庫和框架。我之前曾在一些小專案中使用過 Nest.js。功能全面,專案快速實施。不過,對於我的小專案來說,它的許多功能確實有點大材小用,而且封裝程度很高,寫程式的自由度很小。

一次偶然的機會,我在網路上認識了Hono。閱讀其文件後:

  • 超快? - 路由器 RegExpRouter 確實很快。它不使用線性循環。就是很快。
  • 輕量級? - hono/tiny 預設小於 12 kB。 Hono 零依賴,僅使用 Web 標準 API。
  • 多運行時? - 它適用於 Cloudflare Workers、Fastly Compute@Edge、Deno、Bun、Lagon、AWS Lambda 或 Node.js。相同的程式碼在所有平台上運行。
  • 有能力? - Hono 附帶內建中間件、自訂中間件、第三方中間件和幫助程式。包羅萬象。
  • Pleasant DX ?️ - 它擁有超級乾淨的 API 和出色的 TypeScript 支援。現在,我們有了「類型」。

使用案例

Hono 是一個簡單的 Web 應用程式框架,類似於 Express,但沒有前端。它允許您與中間件結合使用來建立更大的應用程式。以下是一些用例範例:

  • 建構網路介面
  • 後端伺服器代理
  • CDN 前端
  • 邊緣應用
  • 圖書館的基本伺服器
  • 全端應用

太好了,讓我們開始學習吧。

你好世界

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

路線

HTTP 方法

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。

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可以直接為使用者顯示類型提示。

Leapcell:用於 Nodejs 託管的高級無伺服器平台

Hono.js: The Next-Gen Node.js Framework

最後要介紹一個非常適合部署Hono應用的平台:Leapcell。

Leapcell 是無伺服器平台,具有以下特點:

  1. 多語言支援
    • 使用 JavaScript、Python、Go 或 Rust 進行開發。
  2. 免費部署無限個專案
    • 只需支付使用費用-無請求,不收費。
  3. 無與倫比的成本效率
    • 即用即付,無閒置費用。
    • 範例:25 美元支援 694 萬個請求,平均回應時間為 60 毫秒。
  4. 簡化的開發者體驗
    • 直覺的使用者介面,輕鬆設定。
    • 完全自動化的 CI/CD 管道和 GitOps 整合。
    • 即時指標和日誌記錄以獲取可行的見解。
  5. 輕鬆的可擴充性和高效能
    • 自動擴展,輕鬆處理高並發。
    • 零營運開銷 - 只需專注於建置。

在文件中探索更多內容!

Leapcell Twitter:https://x.com/LeapcellHQ

以上是Hono.js:下一代 Node.js 框架的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn