ホームページ >ウェブフロントエンド >jsチュートリアル >Hono.js: 次世代の Node.js フレームワーク

Hono.js: 次世代の Node.js フレームワーク

Barbara Streisand
Barbara Streisandオリジナル
2025-01-06 22:33:42372ブラウズ

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

なぜほのを学ぶのか

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

市場にはすでに Node.js 用のバックエンド ライブラリとフレームワークが多数存在します。私は以前、いくつかの小規模プロジェクトに Nest.js を使用したことがあります。充実した機能を備えており、迅速なプロジェクトの実行を可能にします。しかし、私の小規模プロジェクトにとって、その機能の多くは本当に過剰であり、高度なカプセル化が行われているため、コードを記述する際の自由度はほとんどありません。

私は偶然、オンラインでほのを知りました。ドキュメントを読んだ後:

  • 超高速 ? - ルーター 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 は、Express に似たシンプルな Web アプリケーション フレームワークですが、フロントエンドはありません。ミドルウェアと組み合わせることで、より大規模なアプリケーションを構築できます。以下にいくつかの使用例を示します:

  • Web インターフェースの構築
  • バックエンドサーバープロキシ
  • 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 に変更するだけで、React によく似た JSX を直接記述することができます。

バリデーター

クライアントから送信されたリクエストが指定されたデータ形式に準拠しているかどうかを確認するために、zod および @hono/zod-validator を通じてバリデータが実装されます。
インストール: 糸追加 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 は、平均応答時間 60 ミリ秒で 694 万のリクエストをサポートします。
  4. 合理化された開発者エクスペリエンス
    • 直感的な UI でセットアップが簡単です。
    • 完全に自動化された CI/CD パイプラインと GitOps の統合。
    • 実用的な洞察を得るリアルタイムのメトリクスとログ。
  5. 簡単な拡張性と高いパフォーマンス
    • 自動スケーリングにより、高い同時実行性を簡単に処理できます。
    • 運用上のオーバーヘッドがゼロ - 構築だけに集中できます。

ドキュメントでさらに詳しく見てみましょう!

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

以上がHono.js: 次世代の Node.js フレームワークの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。