Hono

モチベーション
- Bun + Honoの環境構築
- Hello World
- Honoのドキュメントに一通り触れる
- CSS in JS系、UIライブラリ系はどれが良いか調べる
- Cloudflare Workersとの連携
参考

bunx create-hono bun-hono
cd bun-hono
bun install
bun dev

Hono は、Express に似た、フロントエンドのないシンプルな Web アプリケーション フレームワークです。
Web APIの構築
バックエンドサーバーのプロキシ
CDN の前面
エッジアプリケーション
ライブラリのベースサーバー
フルスタックアプリケーション

ミドルウェア、ヘルパー
Basic Authentication
Bearer Authentication
Cache
Compress
Cookie
CORS
ETag
html
JSX
JWT Authentication
Logger
Pretty JSON
Secure Headers
Streaming
GraphQL Server
Firebase Authentication
Sentry
このあたりを学んでいけばHonoに対する解像度が上がる

API作成周り
React + Cloudflare Pagesのさんぷるもある

2024/01/31
次ここから

こういう記述が出来る。
apiと関数コンポーネントが同居できるのがすごい
app.get('/api/hello', (c) => {
return c.json({ ok: true, message: 'Hello Hono!' })
})
app.get('/post/:id', (c) => {
const page = c.req.query('page')
const id = c.req.param('id')
c.header('X-Message', 'Hi!')
return c.json({ ok: true, message: 'Hello Hono!' })
})
app.post('/posts', (c) => c.text('Created!', 201))
app.delete('/posts/:id', (c) => c.text(`${c.req.param('id')} is deleted`))
const View = () => {
return (
<html>
<body>
<h1>Hello Hono</h1>
</body>
</html>
)
}
app.get('/page', (c) => {
return c.html(<View />)
})

app.useでミドルウェアを利用する。
basic認証を利用した開発をしたい場合、以下のように定義できる
import { basicAuth } from 'hono/basic-auth'
app.use(
'/admin/*',
basicAuth({
username: 'admin',
password: 'secret',
})
)
app.get('/admin', (c) => {
return c.text('You are authorized!')
})

Cloudflare Workers → Cloudflare CDN上のJavaScriptエッジランタイム
Wrangler

import { Hono } from 'hono'
const app = new Hono()
app.get('/', (c) => {
return c.text('Hello Cloudflare Workers!!')
})
export default app
bun run deployで実行ok

Cloudflare Workersを利用するために、構文が2つ
Service Worker モードとModule Worker モード
Honoでは両方利用可能
// Service Worker
app.fire()
// Module Worker
export default app
※バインディング変数がローカライズされるため、いまいまはModule Workerを利用

2024/02/14
静的ファイル提供
wrangler.tomlを編集
[site]
bucket = "./assets"
import manifest from '__STATIC_CONTENT_MANIFEST'
rewriteRequestPath

HonoX