開始使用
使用 Hono 非常簡單。我們可以設置專案、編寫程式碼、使用本地伺服器進行開發,並快速部署。相同的程式碼可以在任何執行環境中運作,只是入口點不同。讓我們看看 Hono 的基本用法。
啟動器
每個平台都有啟動器範本。使用以下 "create-hono" 命令。
npm create hono@latest my-app
yarn create hono my-app
pnpm create hono@latest my-app
bun create hono@latest my-app
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
中,所以請進入該目錄並安裝相依性。
cd my-app
npm i
cd my-app
yarn
cd my-app
pnpm i
cd my-app
bun i
當套件安裝完成後,請執行以下命令以啟動本地伺服器。
npm run dev
yarn dev
pnpm dev
bun run dev
Hello World
您可以使用 Cloudflare Workers 開發工具 "Wrangler"、Deno、Bun 或其他工具,以 TypeScript 編寫程式碼,而無需擔心轉譯。
在 src/index.ts
中使用 Hono 編寫您的第一個應用程式。下面的範例是一個啟動 Hono 應用程式。
import
和最後的 export default
部分可能會因執行環境而異,但是所有的應用程式程式碼都會在任何地方執行相同的程式碼。
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
。
npm run dev
yarn dev
pnpm dev
bun run dev
回傳 JSON
回傳 JSON 也很容易。以下是一個處理對 /api/hello
的 GET 請求並回傳 application/json
回應的範例。
app.get('/api/hello', (c) => {
return c.json({
ok: true,
message: 'Hello Hono!',
})
})
請求與回應
獲取路徑參數、URL 查詢值和附加回應標頭的程式碼如下所示。
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。
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 的範例。
const View = () => {
return (
<html>
<body>
<h1>Hello Hono!</h1>
</body>
</html>
)
}
app.get('/page', (c) => {
return c.html(<View />)
})
回傳原始回應
您也可以回傳原始的 Response。
app.get('/', (c) => {
return new Response('Good morning!')
})
使用中介軟體
中介軟體可以為您完成繁重的工作。例如,加入基本身份驗證。
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
。
import { upgradeWebSocket } from 'hono/cloudflare-workers'
app.get(
'/ws',
upgradeWebSocket((c) => {
// ...
})
)
下一步
大多數程式碼都可以在任何平台上運作,但是每個平台都有指南。例如,如何設定專案或如何部署。請查看您想要用來建立應用程式的確切平台的頁面!