跳至內容

開始使用

使用 Hono 非常簡單。我們可以設置專案、編寫程式碼、使用本地伺服器進行開發,並快速部署。相同的程式碼可以在任何執行環境中運作,只是入口點不同。讓我們看看 Hono 的基本用法。

啟動器

每個平台都有啟動器範本。使用以下 "create-hono" 命令。

sh
npm create hono@latest my-app
sh
yarn create hono my-app
sh
pnpm create hono@latest my-app
sh
bun create hono@latest my-app
sh
deno run -A npm:create-hono@latest my-app

然後會詢問您要使用哪個範本。在這個範例中,讓我們選擇 Cloudflare Workers。

? Which template do you want to use?
    aws-lambda
    bun
    cloudflare-pages
❯   cloudflare-workers
    deno
    fastly
    nextjs
    nodejs
    vercel

該範本將被拉取到 my-app 中,所以請進入該目錄並安裝相依性。

sh
cd my-app
npm i
sh
cd my-app
yarn
sh
cd my-app
pnpm i
sh
cd my-app
bun i

當套件安裝完成後,請執行以下命令以啟動本地伺服器。

sh
npm run dev
sh
yarn dev
sh
pnpm dev
sh
bun run dev

Hello World

您可以使用 Cloudflare Workers 開發工具 "Wrangler"、Deno、Bun 或其他工具,以 TypeScript 編寫程式碼,而無需擔心轉譯。

src/index.ts 中使用 Hono 編寫您的第一個應用程式。下面的範例是一個啟動 Hono 應用程式。

import 和最後的 export default 部分可能會因執行環境而異,但是所有的應用程式程式碼都會在任何地方執行相同的程式碼。

ts
import { Hono } from 'hono'

const app = new Hono()

app.get('/', (c) => {
  return c.text('Hello Hono!')
})

export default app

啟動開發伺服器,並使用瀏覽器存取 https://127.0.0.1:8787

sh
npm run dev
sh
yarn dev
sh
pnpm dev
sh
bun run dev

回傳 JSON

回傳 JSON 也很容易。以下是一個處理對 /api/hello 的 GET 請求並回傳 application/json 回應的範例。

ts
app.get('/api/hello', (c) => {
  return c.json({
    ok: true,
    message: 'Hello Hono!',
  })
})

請求與回應

獲取路徑參數、URL 查詢值和附加回應標頭的程式碼如下所示。

ts
app.get('/posts/:id', (c) => {
  const page = c.req.query('page')
  const id = c.req.param('id')
  c.header('X-Message', 'Hi!')
  return c.text(`You want see ${page} of ${id}`)
})

我們可以輕鬆地處理 POST、PUT 和 DELETE,而不僅僅是 GET。

ts
app.post('/posts', (c) => c.text('Created!', 201))
app.delete('/posts/:id', (c) =>
  c.text(`${c.req.param('id')} is deleted!`)
)

回傳 HTML

您可以使用 html 輔助函數編寫 HTML,或使用 JSX 語法。如果要使用 JSX,請將檔案重新命名為 src/index.tsx 並進行設定(請參閱每個執行環境,因為它們不同)。以下是使用 JSX 的範例。

tsx
const View = () => {
  return (
    <html>
      <body>
        <h1>Hello Hono!</h1>
      </body>
    </html>
  )
}

app.get('/page', (c) => {
  return c.html(<View />)
})

回傳原始回應

您也可以回傳原始的 Response

ts
app.get('/', (c) => {
  return new Response('Good morning!')
})

使用中介軟體

中介軟體可以為您完成繁重的工作。例如,加入基本身份驗證。

ts
import { basicAuth } from 'hono/basic-auth'

// ...

app.use(
  '/admin/*',
  basicAuth({
    username: 'admin',
    password: 'secret',
  })
)

app.get('/admin', (c) => {
  return c.text('You are authorized!')
})

Hono 提供了許多有用的內建中介軟體,包括 Bearer 和使用 JWT 的身份驗證、CORS 和 ETag。Hono 也提供了使用外部函式庫的第三方中介軟體,例如 GraphQL Server 和 Firebase Auth。而且,您可以建立自己的中介軟體。

適配器

有些適配器用於處理平台相關的功能,例如處理靜態檔案或 WebSocket。例如,要在 Cloudflare Workers 中處理 WebSocket,請導入 hono/cloudflare-workers

ts
import { upgradeWebSocket } from 'hono/cloudflare-workers'

app.get(
  '/ws',
  upgradeWebSocket((c) => {
    // ...
  })
)

下一步

大多數程式碼都可以在任何平台上運作,但是每個平台都有指南。例如,如何設定專案或如何部署。請查看您想要用來建立應用程式的確切平台的頁面!

根據 MIT 許可發布。