Next.jsとmicroCMSを連携して個人ブログを作成する
Next.jsとmicroCMSを連携して個人ブログを作成する
このサイトを参考に進める
こちらのセクションでコードをコピペしてサンプルらしきものを作成した
ディレクトリ階層はこちら(余計なものは省く)
├── app
│ ├── layout.tsx
│ ├── page.tsx
│ └── static
│ ├── [postId]
│ │ └── page.tsx
│ └── page.tsx
└── libs
└── microcms.ts
一旦コードをコピペして動かそうとしたが、理解のためにhttp://localhost:3000/static/page.tsxにアクセスしてもエラーで動かない。
Unhandled Runtime Error
Error: fetch API response status: 404
そりゃそーだ。
ディレクトリの中のpage.tsx
はURLで指定すべきじゃないんだ
こっちでアクセス
http://localhost:3000/static/
なんやかんやあったが無事アクセスできた
サンプルコードを見てて気になった部分
↓のarray.map()
のpost
はどんな名前でもOK
return (
<div>
<h1>{time}</h1>
<ul>
{contents.map((post) => {
return (
<li key={post.id}>
<Link href={`/static/${post.id}`} style={{color: 'red'}}>{post.title}</Link>
</li>
);
})}
</ul>
</div>
);
test
でも試したがうまく動いたため任意であるはず
<ul>
{contents.map((test) => {
return (
<li key={test.id}>
<Link href={`/static/${test.id}`}>{test.title}</Link>
</li>
);
})}
</ul>
Static Rendering
静的ページの構築に向いたレンダリング手法。
主に以下のメリットがある
- Webサイトの高速化
- サーバー負担の軽減
- SEO
Webサイトの高速化
事前にレンダリングされたコンテンツをキャッシュに保管することにより、ユーザーが迅速かつ確実にWebサイトのコンテンツにアクセスすることができる。
サーバー負担の軽減
コンテンツがキャッシュされることにより、ユーザーのリクエストごとにコンテンツを動的に生成する必要がなくなる
SEO
事前にコンテンツがレンダリングされ、ページの読み込み時には既に利用可能となる。
そのため、検索エンジンのクローラーにとってインデックス付けが容易となる。
これにより、ランキングが向上する可能性があるらしい。
結論
定期的に更新されるページには向かない。
逆に言えば今回作るブログには向いている
接続完了
接続できたからブログ用にカスタムしていく
ESLint入れたら何故かjsxファイルの1行目でエラーが表示される
原因
根本原因は分からず。。。
とりあえず無駄に入れてた以下をnpm uninstall @babel/eslint-parser
コマンド実行することで解決した
"@babel/eslint-parser": "^7.12.1",
使えそうなコンポーネント
globals.cssの解説
Rect Hooks