aboutページで作成していたヘッダー部分をコンポーネント化する
componentsフォルダを作成してNavigation.astroを作る
書き方がしっかりとコードフェンスに慣れていればめちゃ描きやすい!
---
---
<a href="/">Home</a>
<a href="/about">About</a>
<a href="/blog">Blog</a>
import Navigation from '../components/Navigation.astro';
---
<Navigation />
と記述するだけで簡単に利用することができるようになる。
---
const platform: string = 'github';
const username: string = 'sasaki-sota';
const projectName: string = 'astro-handson';
---
<footer>
<p>
My creation Project by: <a
href={`"https://www.${platform}.com/${username}/${projectName}"`}
>{projectName}</a>
</p>
</footer>
import Footer from '../components/Footer.astro';
---
<Footer />
これもcomponents同様にすごく簡単に実装することができる。
ソーシャルメディアの部分をpropsのあるコンポーネントとして利用する
---
interface SocialProps {
[key: string]: string;
}
const { platform, link }: SocialProps = Astro.props;
---
<a href={`${link}`}>{platform}</a>
全体像だとこんな感じ。
全てpropsで統一していないけど参考として記述しておく
---
import Social from './Social.astro';
const platform: string = 'github';
const username: string = 'sasaki-sota';
const projectName: string = 'astro-handson';
---
<footer>
<p>
My creation Project by: <a
href={`"https://www.${platform}.com/${username}/${projectName}"`}
>{projectName}</a
>
</p>
<Social platform="instagram" link="https://www.instagram.com/" />
</footer>
layoutsファイルを作成
slot ... ここの部分を記述することでBaseLayout内のelementを反映することができるようになっている
---
import Footer from '../components/Footer.astro';
import '../styles/global.css';
const pageTitle = 'Home Page';
---
<html lang="en">
<head>
<meta charset="utf-8" />
<link rel="icon" type="image/svg+xml" href="/favicon.svg" />
<meta name="viewport" content="width=device-width" />
<meta name="generator" content={Astro.generator} />
<title>{pageTitle}</title>
</head>
<body>
<h1>{pageTitle}</h1>
<slot />
<Footer />
</body>
</html>
---
import BaseLayout from '../Layouts/BaseLayout.astro';
const pageTitle = 'Home Page';
---
<BaseLayout>
<h2>My awesome blog subtitle</h2>
</BaseLayout>
個人的にこれ以上キャッチアップすることは現段階ではないということを判断することができたのでやりません。
現在、かなり忙しい状態でありあまり時間もないため、とりあえず今後のastroの再会めどは立っていない状況です。
また時間ができた時に残りのAPIの取得部分やデザイン周りにも注力していきたいと思っていますがここまででastroの大まかの雰囲気は掴めたと思います。
このプロジェクト自体はドキュメントと少し違いtypescript中心に開発していきましたが、今後さらにしっかり記述していきたいです。
また、今回のプロジェクトを通してかいつまんで機能を実装したりコードを記述しなければ後からしんどくなるということを学んだので今後はしっかりと重要な部分をみき分けて記述していきます。
このような形になって申し訳ありませんが、今後この記事の更新やプロジェクトの続編などもあるかもしれないので注目してもらえると嬉しいです。
ご迷惑をおかけします🙇♂️