htmx + astro4 スタック試作、exampleなど
### 概要:
- 前scrapの続編で、 htmx + astroの関連メモとなります。
- テストは、vercelデプロイする例です。
[ 作成日: 2024/07/07 ]
### 環境
- htmx
- astro 4.11
- vercel
### 作成したコード
https://github.com/kuc-arc-f/astro4_2htmx
- adapter vercel使う例です。
npx astro add vercel
### stackblitz
- htmx1.astro
https://github.com/kuc-arc-f/astro4_2htmx/blob/main/src/pages/htmx1.astro
- hx-get: GET通信
<button
hx-get="https://jsonplaceholder.typicode.com/users/1"
hx-target="#h2"
>
Click
</button>
<h3 id="h2">ここに表示</h3>
- htmx2.astro
https://github.com/kuc-arc-f/astro4_2htmx/blob/main/src/pages/htmx2.astro
- hx-post: POST通信、内部APIエンドポイント指定します。
<form
hx-post="/api/test/test1"
hx-trigger="submit"
hx-target="#h2"
hx-on="htmx:afterRequest: alert("OK, post send")"
>
<input type="text" name="name" />
<button type="submit">Add</button>
</form>
<hr />
<h3 id="h2">ここに表示</h3>
- API
- src/pages/api/test/test1.ts
https://github.com/kuc-arc-f/astro4_2htmx/blob/main/src/pages/api/test/test1.ts
### API 連携の参考
- d1 連携の例になります。
### 作成したコード
https://github.com/kuc-arc-f/astro4_2htmx/tree/main/example/api_test
- testapi.astro
- example/api_test/src/pages/testapi.astro
https://github.com/kuc-arc-f/astro4_2htmx/blob/main/example/api_test/src/pages/testapi.astro
- hx-post: 内部API経由で、通信します。
<form
hx-post="/api/test/create"
hx-trigger="submit"
hx-target="#h2"
hx-on="htmx:afterRequest: location.reload()"
>
### Turso LibSQL 連携の参考
### 作成したコード
https://github.com/kuc-arc-f/astro4_2htmx/tree/main/example/turso_todo
- htmxtodo.astro : List
- example/turso_todo/src/pages/htmxtodo.astro
https://github.com/kuc-arc-f/astro4_2htmx/blob/main/example/turso_todo/src/pages/htmxtodo.astro
- hx-post: POST通信、内部API送信します。
<form
hx-post="/api/turso_todo/create"
hx-trigger="submit"
hx-target="#h2"
hx-on="htmx:afterRequest: location.reload()"
>
- API: create
- example/turso_todo/src/pages/api/turso_todo/create.ts
- POST受信、SQL実行します。
### 簡易的な認証
### 作成したコード
https://github.com/kuc-arc-f/astro4_2htmx/tree/main/example/simple_auth
- example/simple_auth/src/pages/login.astro
https://github.com/kuc-arc-f/astro4_2htmx/blob/main/example/simple_auth/src/pages/login.astro
- hx-post: POST送信
- server認証
<form
hx-post="/api/auth/user_login"
hx-trigger="submit"
hx-target="#resulte_form1"
hx-on="htmx:afterRequest: Login.afterPostForm1()"
>
- example/simple_auth/src/pages/api/auth/user_login.ts
- email, passs検証、成功時にresulte_code=200 返却します。
### Zod form 検証
### 作成したコード
https://github.com/kuc-arc-f/astro4_2htmx/tree/main/example/zod
- example/zod/src/pages/zod1.astro
https://github.com/kuc-arc-f/astro4_2htmx/blob/main/example/zod/src/pages/zod1.astro
<form
hx-post="/api/zod/zod1"
hx-trigger="submit"
hx-target="#resulte_form1"
hx-on::after-request="Zod1.afterPostForm1()"
>
<label>title</label>
<input type="text" name="title" /><br />
<label>content</label>
<input type="text" name="content" />
<button type="submit">Add</button>
</form>
<hr />
<div id="resulte_form1" class="d-none">ここに表示</div>
- hx-post: POST通信
- API
- example/zod/src/pages/api/zod/zod1.ts
- zod設定
- NGの場合、エラーデータを返却
https://github.com/kuc-arc-f/astro4_2htmx/blob/main/example/zod/src/pages/api/zod/zod1.ts