ずっと触ってみたいと思っていた。
今までは英語学習をやっていた関係もあってプログラミング自体は取りやめていたが最近無事に目標達成をしたので、昨日無事にブログの開発も一度完了としたことでようやく機会がやってきた。
公式サイト
簡単に紹介をするとよくページスピードインサイトなどでページを確認してみると必要ないJSコードがある場合がかなり多いがこのフレームワークを利用することで、不必要なJSを排除してHTMLとCSSで構成されるものになっている。
また、比較的新しいフレームワークになっており、実際にドキュメントを見てみると様々な場面でのユースケースを想定していることがわかるようになっている所感がある。
今後プロフィールサイトを刷新する際に選択肢の一つとなることになる点やReactを長く利用している自分にとってもあまり学習コストの障壁を高めることなく開発することができると考えているため。
また、その際の機能についての要件もAstroならより高パフォーマンスで実現することができるようになるだろうと考えたため。
参考サイト
個人的な肌間としてNext.jsがおそらく比較対象になるだろうと考えている。
---
import AstroComponent from '../components/AstroComponent.astro';
import ReactComponent from '../components/ReactComponent.jsx';
import sampleData from '../data/sample.json';
// <X title="Hello, World" />` のように、渡されたコンポーネントプロップにアクセスする。
const {title} = Astro.props;
// プライベートなAPIやデータベースからも、外部データを取得する。
const data = await fetch('SECRET_API_URL/users').then(r => r.json());
---
<!-- Your template here! -->
<!-- HTMLコメント対応! -->
{JS コメント構文も有効です。*/}
<Banner />
<h1>Hello, world!</h1>
<!-- コンポーネントスクリプトのpropsやその他の変数を使用します。-->
<p>{title}</p>
<!-- hydrateに`client:`ディレクティブを持つ他のUIフレームワークのコンポーネントを含める: -->。
<ReactComponent client:visible />
<!-- JSXと同様に、HTMLとJavaScriptの式を混ぜる: -->。
<ul>
{myFavorites.map((data) => <li>{data.name}</li>)}
</ul>
<!-- テンプレートディレクティブを使って、複数の文字列やオブジェクトからクラス名を構築する! -->
<p class:list={["add", "dynamic", {classNames: true}]} />
ここの部分に関しては実際に参考サイトを参考してもらう方がいいかもしれない。
// バージョンが古いと最新版のastroを利用することができないため
// n - nodeのバージョン管理
// 参考サイト: https://github.com/tj/n
$ sudo n latest
----
// 最新のnodeのバージョンになっているいるかどうかを確認
$ node -v
----
$ npm install -g astro
----
$ npm create astro@latest
----
... ~対話の開始 ... recommendを利用することを推奨
----
$ npm run dev
----
> astro-dev@0.0.1 dev
> astro dev
🚀 astro v2.1.3 started in 78ms
┃ Local http://localhost:3000/
┃ Network use --host to expose
と一連のコマンドを入力して欲しい。
もしここで説明が足りないや何か設定ができないなどあればご連絡ください🙇♂️
このようなページが表示されれば成功となる!
個人的にはとても簡単にプロジェクトが作成することができる上に、最近流行りの対話型シェルでのプロジェクト作成ができるためとても簡単に作成することができる。
TSサポートをしてくれているのも嬉しいポイント。
かなり高速での説明となってしまい至らない部分がほとんどだと思うがコメント形で是非指摘してほしい。
またまだまだAstro入門したてなので少しずつ記述方法や概要などをしっかりと掴んでいきたい。
今までの馴染みある記法や技術を利用することができるのは強いのでしっかりと理解を深めていきたい
次はハンズオンをやります!!