Remix / React Router v7¶
React Router v7 を Framework モード (Remix の後継) で使うテンプレートです。Loader / コンポーネント / ルートレイアウトは app/ 配下に置かれ、ReScript がホームの Loader と Greet コンポーネントを担います。SSR は @react-router/dev の Vite プラグインで既定有効、本番は @react-router/serve 経由で動作します。
生成されるレイアウト¶
app/
├── root.tsx
├── routes.ts
├── routes/
│ └── home.tsx
├── components/
│ └── Greet.res
├── loaders/
│ └── HomeLoader.res
└── __tests__/
└── Greet.test.mjs
vite.config.ts
react-router.config.ts
tsconfig.json
rescript.json
package.json
主なファイル¶
app/root.tsx— 全ルートで共有するLayoutとAppシェルを定義します。app/routes.ts—@react-router/dev/routesのヘルパーを使ったルート明示登録。routes/home.tsxをindexとしてマウントします。app/routes/home.tsx— ホームルート。react-router typegenが生成する型付きRoute名前空間を使い、ReScript の Loader とコンポーネントを.res.mjs経由で読み込みます。app/loaders/HomeLoader.res— ReScript で書かれたサンプル Loader。ルート側の TSX グルーを薄く保ち、Loader 単体でユニットテスト可能にします。vite.config.ts—reactRouter()プラグインのみ。router プラグインが React refresh ランタイムを設定済みのため@vitejs/plugin-reactは不要です。
npm スクリプト¶
コマンド |
説明 |
|---|---|
|
|
|
ReScript をコンパイルしてから |
|
|
|
ルート型を生成してから |
|
Vitest を実行します。 |
Day-two ポインタ¶
ルート追加 —
app/routes.tsをroute(":id", "routes/show.tsx")、layout("routes/dashboard.tsx", [...])などで拡張します。編集後はpnpm typecheckを実行して型付き+types/...モジュールをリフレッシュしてください。Action 追加 — ルートファイルで
export async function action(args: Route.ActionArgs)をエクスポートし、<Form method="post">から POST します。SPA モードへ切り替え — クライアント専用デプロイの場合は
react-router.config.tsでssr: falseを指定します。