自分に関する動的なコンテンツを追加する
HTMLコンテンツをもつ複数ページのウェブサイトができたので、動的なHTMLを追加しましょう!
ここで学ぶことは…
- ページのタイトルをフロントマターで定義し、HTMLで使用する
- HTML要素を条件に応じて表示する
- 自分に関するコンテンツを追加する
HTMLファイルであればAstro言語として有効です。しかし、Astroでは通常のHTML以上のことができます!
変数を定義して使用する
about.astro
を開くと、以下のようになっているはずです。
-
以下のJavaScriptをフロントマターのコードフェンスの間に追加します。
-
HTML内の静的な「Astro」というタイトルと「私について」という見出しを、動的な変数
{pageTitle}
に置き換えます。 -
/about
ページのライブプレビューを更新します。ページ内のテキストは変化せず、一方でブラウザのタブに表示されるページタイトルが「Astro」から「私について」に変わっているはずです。
.astro
ファイル内の2箇所で、HTMLタグに直接テキストを入力する代わりに、変数を定義して使用したのです。 -
同様にして、
index.astro
(「ホームページ」)とblog.astro
(「私のAstro学習ブログ」)でpageTitle
を作成して使用しましょう。各ページのHTMLを2箇所ずつ更新し、ページタイトルが各ページに表示される見出しと一致するようにします。
- JavaScriptまたはTypeScriptの式により、Astroスクリプト内で変数を定義します。
- Astroテンプレート内で変数を波括弧
{ }
で囲んで使用すると、AstroにJavaScriptを使用していることを伝えられます。
AstroでJavaScriptの式を書く
-
以下のJavaScriptを、コードフェンスの間のフロントマターに追加します。
(コードを変更しても構いませんが、このチュートリアルでは以下の例を使用します。)
-
続いて、HTMLテンプレートの既存コンテンツの下に以下のコードを追加します。
- Astroテンプレートを書くのはHTMLを書くのと非常に似ていますが、JavaScriptの式を含めることができます。
- AstroフロントマターにはJavaScriptのみが含まれます。
.astro
ファイルのどちらのセクションでも、JavaScriptのすべてのモダンな論理演算子、式、関数を使用できます。ただし、波括弧はHTMLテンプレートボディでのみ必要です。
確認テスト
-
.astro
ファイルのフロントマターで使用される言語はどれですか? -
HTMLに加えて、Astro構文に含めることができるのは何ですか?
-
JavaScriptを波括弧で囲む必要があるのはいつですか?
条件に応じて要素をレンダリングする
スクリプト変数を使用して、HTML<body>
コンテンツの個々の要素をレンダリングするかどうかの選択も可能です。
-
変数を定義するために、フロントマターに以下の行を追加します。
-
既存の段落の下に以下の行を追加します。
そして、ブラウザタブのライブプレビューから、ページに表示されている内容を確認します。
-
作業を進める前に、変更をGitHubにコミットします。作業を保存してウェブサイトを更新したいときは、常にこれをおこなうようにしましょう。
Astroのテンプレート構文はJSX構文に似ています。HTMLでスクリプトを使用する方法がわからない場合は、JSXでのやり方を検索するのが良い出発点になるでしょう!
パターンを分析する
以下の.astro
スクリプトが与えられたとします。
以下の各Astroテンプレート式について、ブラウザに送信されるHTML(もしあれば)を予測できますか?正しく予測できたかどうか、クリックして確認してください!
-
<p>{operatingSystem}</p>
-
{student && <p>私はまだ学生です。</p>}
-
<p>私は{quantity + 8}足の{footwear}を持っています。</p>
-
{operatingSystem === "MacOS" ? <p>私はMacを使っています。</p> : <p>私はMacを使っていません。</p>}