Sol SSG

ダイナミックルート

Sol SSG は _param_ ディレクトリ命名パターンを使用した動的ルート生成をサポートしています。これにより、単一のテンプレートから複数の静的ページを生成できます。

基本的な使い方

ディレクトリ構造

docs/
└── posts/
    ├── index.md              # 投稿一覧ページ
    └── _slug_/               # 動的パラメータディレクトリ
        ├── page.json         # 静的パラメータ設定
        └── index.md          # 各ページのテンプレート

設定(page.json)

staticParams を使用して生成するページを定義します:

{
  "staticParams": [
    { "slug": "hello-world" },
    { "slug": "getting-started" },
    { "slug": "advanced-topics" }
  ]
}

テンプレート(index.md)

テンプレートファイルはすべての生成ページに使用されます:

---
description: ブログ投稿
---

# 投稿ページ

このコンテンツはすべての生成ページで共有されます。

生成される出力

上記の設定で、Sol SSG は以下を生成します:

  • /posts/hello-world/index.html

  • /posts/getting-started/index.html

  • /posts/advanced-topics/index.html

パラメータ命名

パラメータ名はディレクトリ名から抽出されます:

ディレクトリパラメータ
_slug_slug
_id_id
_category_category

自動生成タイトル

frontmatter で title が指定されていない場合、Sol SSG はパラメータ値からタイトルを生成します:

  • hello-world → "Hello World"

  • getting-started → "Getting Started"

複数パラメータ

ネストしたディレクトリで複数のパラメータを使用できます:

docs/
└── blog/
    └── _category_/
        └── _slug_/
            ├── page.json
            └── index.md
{
  "staticParams": [
    { "category": "tech", "slug": "intro-to-moonbit" },
    { "category": "tech", "slug": "advanced-patterns" },
    { "category": "news", "slug": "release-notes" }
  ]
}

クライアントサイドルーティングとの比較

機能ダイナミックルート(_slug_)クライアントサイド(BrowserRouter)
SEO完全な静的 HTML初期ページのみ
ビルド時間すべてのページを生成単一のエントリーポイント
ナビゲーションフルページリロードSPA のような即時遷移
ユースケースブログ投稿、ドキュメントインタラクティブアプリ

クライアントサイドの動的ルーティング(SPA)については、Islands を参照してください。