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

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
JavaScript和Web:核心功能和用例JavaScript和Web:核心功能和用例Apr 18, 2025 am 12:19 AM

JavaScript在Web開發中的主要用途包括客戶端交互、表單驗證和異步通信。 1)通過DOM操作實現動態內容更新和用戶交互;2)在用戶提交數據前進行客戶端驗證,提高用戶體驗;3)通過AJAX技術實現與服務器的無刷新通信。

了解JavaScript引擎:實施詳細信息了解JavaScript引擎:實施詳細信息Apr 17, 2025 am 12:05 AM

理解JavaScript引擎內部工作原理對開發者重要,因為它能幫助編寫更高效的代碼並理解性能瓶頸和優化策略。 1)引擎的工作流程包括解析、編譯和執行三個階段;2)執行過程中,引擎會進行動態優化,如內聯緩存和隱藏類;3)最佳實踐包括避免全局變量、優化循環、使用const和let,以及避免過度使用閉包。

Python vs. JavaScript:學習曲線和易用性Python vs. JavaScript:學習曲線和易用性Apr 16, 2025 am 12:12 AM

Python更適合初學者,學習曲線平緩,語法簡潔;JavaScript適合前端開發,學習曲線較陡,語法靈活。 1.Python語法直觀,適用於數據科學和後端開發。 2.JavaScript靈活,廣泛用於前端和服務器端編程。

Python vs. JavaScript:社區,圖書館和資源Python vs. JavaScript:社區,圖書館和資源Apr 15, 2025 am 12:16 AM

Python和JavaScript在社區、庫和資源方面的對比各有優劣。 1)Python社區友好,適合初學者,但前端開發資源不如JavaScript豐富。 2)Python在數據科學和機器學習庫方面強大,JavaScript則在前端開發庫和框架上更勝一籌。 3)兩者的學習資源都豐富,但Python適合從官方文檔開始,JavaScript則以MDNWebDocs為佳。選擇應基於項目需求和個人興趣。

從C/C到JavaScript:所有工作方式從C/C到JavaScript:所有工作方式Apr 14, 2025 am 12:05 AM

從C/C 轉向JavaScript需要適應動態類型、垃圾回收和異步編程等特點。 1)C/C 是靜態類型語言,需手動管理內存,而JavaScript是動態類型,垃圾回收自動處理。 2)C/C 需編譯成機器碼,JavaScript則為解釋型語言。 3)JavaScript引入閉包、原型鍊和Promise等概念,增強了靈活性和異步編程能力。

JavaScript引擎:比較實施JavaScript引擎:比較實施Apr 13, 2025 am 12:05 AM

不同JavaScript引擎在解析和執行JavaScript代碼時,效果會有所不同,因為每個引擎的實現原理和優化策略各有差異。 1.詞法分析:將源碼轉換為詞法單元。 2.語法分析:生成抽象語法樹。 3.優化和編譯:通過JIT編譯器生成機器碼。 4.執行:運行機器碼。 V8引擎通過即時編譯和隱藏類優化,SpiderMonkey使用類型推斷系統,導致在相同代碼上的性能表現不同。

超越瀏覽器:現實世界中的JavaScript超越瀏覽器:現實世界中的JavaScriptApr 12, 2025 am 12:06 AM

JavaScript在現實世界中的應用包括服務器端編程、移動應用開發和物聯網控制:1.通過Node.js實現服務器端編程,適用於高並發請求處理。 2.通過ReactNative進行移動應用開發,支持跨平台部署。 3.通過Johnny-Five庫用於物聯網設備控制,適用於硬件交互。

使用Next.js(後端集成)構建多租戶SaaS應用程序使用Next.js(後端集成)構建多租戶SaaS應用程序Apr 11, 2025 am 08:23 AM

我使用您的日常技術工具構建了功能性的多租戶SaaS應用程序(一個Edtech應用程序),您可以做同樣的事情。 首先,什麼是多租戶SaaS應用程序? 多租戶SaaS應用程序可讓您從唱歌中為多個客戶提供服務

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 個月前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
1 個月前By尊渡假赌尊渡假赌尊渡假赌
威爾R.E.P.O.有交叉遊戲嗎?
1 個月前By尊渡假赌尊渡假赌尊渡假赌

熱工具

VSCode Windows 64位元 下載

VSCode Windows 64位元 下載

微軟推出的免費、功能強大的一款IDE編輯器

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

WebStorm Mac版

WebStorm Mac版

好用的JavaScript開發工具

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版