iCAR Tutorial

第3章 フレームワークとは

  1. 3-1 部品とデータに分ける
  2. 3-2 Astro のファイルを読む
  3. 3-3 新しいサイトで追加する

Astro のファイルを読む

このレッスンで学ぶこと

  • Astro のプロジェクトのフォルダ構成
  • .astro ファイルの読み方
  • データから部品を並べる書き方

フォルダの構成

新しい研究室サイトは、こんな構成になっています。

src/
├── pages/         ← 1 ファイルが 1 ページになる
│   └── index.astro
├── components/    ← 部品
│   └── MemberCard.astro
├── data/          ← データ
│   └── members.ts
└── styles/        ← 見た目
public/            ← 画像など、そのまま公開するファイル
└── img/

src/pages/ に置いたファイルが、そのまま URL になります。src/pages/index.astro はトップページ、src/pages/about.astro を作れば /about/ というページができます。

.astro ファイルの形

.astro ファイルは、--- で区切られた 2 つの部分でできています。

---
// 上の部分: 準備(JavaScript)
const title = 'iCAR';
---

<!-- 下の部分: HTML -->
<h1>{title}</h1>

この例では、{title} の場所に iCAR が入り、<h1>iCAR</h1> という HTML ができます。

部品を作る: MemberCard.astro

メンバー 1 人分のカードを部品にすると、こうなります。

---
// この部品を使う側から受け取る値
const { name, en, role, photo } = Astro.props;
---

<div class="member-card">
  <img src={`/img/${photo}`} alt={name} />
  <p class="role">{role}</p>
  <h3>{name}</h3>
  <p class="en">{en}</p>
</div>

2 章で書いた HTML とほとんど同じです。違うのは、名前や写真の部分が {name} のような「穴」になっていることだけです。Astro.props は、この部品を使う側から渡された値を受け取るためのものです。

部品を並べる: index.astro

トップページでは、データを読み込み、1 人ずつ部品に渡して並べます。

---
import MemberCard from '../components/MemberCard.astro';
import { members } from '../data/members';
---

<section id="member">
  <h2>Members</h2>
  {members.map((m) => (
    <MemberCard name={m.name} en={m.en} role={m.role} photo={m.photo} />
  ))}
</section>

members.map((m) => ( ... )) は「members の 1 人ずつを m と呼んで、カッコの中を繰り返す」という意味です。11 人いれば、MemberCard が 11 個できます。

import は、別のファイルにある部品やデータを使えるようにする宣言です。

手元で動かす

Astro のプロジェクトは、次の 2 つのコマンドで手元で動かせます。

npm install   # 必要な部品をダウンロードする(最初の 1 回だけ)
npm run dev   # 手元でサイトを動かす

npm run dev を実行すると http://localhost:4321/ のようなアドレスが表示されます。ブラウザで開くと、サイトが見られます。ファイルを保存すると、ブラウザの表示が自動で更新されます。止めるときは、ターミナルで Ctrl + C を押します。

確認テスト

.astro ファイルの中で、{name} と書いた場所には何が入る?

  1. 文字そのまま「{name}」
  2. 上の部分で用意した、name という変数の中身
答えを見る

2。

src/pages/members.astro というファイルを作ると、どんな URL のページができる?

答えを見る

/members/。pages フォルダのファイルが、そのまま URL になります。

チェックリスト