Astro の実践練習
はじめに
Astro を学んだ後、実際に手を動かしてみることは、知識を深め、スキルを実践する上で非常に有効です。このセクションでは、Astro を使用してブログサイトを作成するプロジェクトを例に、プロジェクトの構想からデプロイまでのステップを具体的に説明します。
プロジェクトのアイデア: Astro ブログサイト
このプロジェクトでは、Astro を使ってシンプルなブログサイトを構築します。主な機能としては、ブログ投稿のリスト表示、個別のブログ投稿ページ、そして静的サイト生成(SSG)による高速なページロードがあります。
ステップ 1: プロジェクトのセットアップ
- 新しい Astro プロジェクトを作成します。
npm init astro
ウィザードの指示に従い、プロジェクトの設定を行います。 - 必要な依存関係をインストールします。ブログ投稿に Markdown を使用する場合、
@astrojs/markdown
をインストールします。npm install @astrojs/markdown
ステップ 2: ブログ投稿の作成
src/pages/blog
ディレクトリを作成し、Markdown ファイル(例:my-first-post.md
)を作成します。- Markdown ファイルにフロントマターを追加し、ブログ投稿のメタデータ(タイトル、日付など)を定義します。
--- title: 'My First Post' date: '2024-01-01' --- # My First Post Welcome to my first blog post written in Astro!
ステップ 3: ブログ投稿のリスト表示
src/pages/blog/index.astro
ファイルを作成し、@astrojs/markdown
を使用してsrc/pages/blog
ディレクトリ内のすべての Markdown ファイルを読み込み、ブログ投稿のリストを表示します。- 各ブログ投稿へのリンクを含むリストを表示します。
--- import { Markdown } from '@astrojs/markdown'; const posts = Markdown.findAll(); --- <ul> {posts.map(post => ( <li> <a href\={post.url}>{post.frontmatter.title}</≠a> <p>{post.frontmatter.date}</p> </li> ))} </ul>
ステップ 4: 個別のブログ投稿ページ
src/pages/blog/[slug].astro
ファイルを作成し、URL のスラッグに基づいて個別のブログ投稿を表示します。- ダイナミックルーティングを使用して、各 Markdown ファイルに対応するページを生成します。
--- import { Markdown } from '@astrojs/markdown'; const post = Markdown.get(Astro.request.params.slug); --- <article> <h1>{post.frontmatter.title}</h1> <p>{post.frontmatter.date}</p> <div innerHTML={{ __html: post.content }} /> </article>
ステップ 5: スタイルとレイアウトの追加
- サイト全体のレイアウトを定義するために、
src/layouts
ディレクトリを作成し、レイアウトコンポーネントを作成します。 - CSS、Tailwind CSS、または好みのスタイリング方法を使用して、サイトのスタイルをカスタマイズします。
ステップ 6: ビルドとデプロイ
- プロジェクトをビルドします。
npm run build
- Vercel、Netlify、Firebase Hosting、または AWS Amplify など、好みのホスティングサービスにデプロイします。