ブログを作りました。
公開日: 2025-01-19
Angularのプリレンダリングがいい感じになったと聞いたので、その実験として雑にブログを作成しました。
利用したFW・ライブラリ・サービスは👇
- Angular v19
- marked
- hightlight.js
- Amazon Route 53
- Github Pages
- Github Actions
- Googleアナリティクス
所要時間は6~7時間程度
プリレンダリングの感想
Angularのプリレンダリングは非常に便利になっていて以下の様に記述するだけで、簡単にプリレンダリングできて感動しました。
export const serverRoutes: ServerRoute[] = [
{
path: '',
renderMode: RenderMode.Prerender
},
{
path: 'posts/:id',
renderMode: RenderMode.Prerender,
getPrerenderParams: () => {
return Promise.resolve(Posts.map(post => ({ id: post.url })));}
},
{
path: '**',
renderMode: RenderMode.Client
}
];
getPrerenderParams
に指定する関数でパラメータリストを渡すことができる。
このブログのポストは全てmarkdownで記述しているため、👇の様にexpress側でmarkedを利用してmarkdownをhtmlに変換・返却する実装を行い、プリレンダリング時にコンポーネントで描画するようにした。
app.get('/posts/:id', (req, res) => {
// 省略
res.send({ content: marked.parse(md, { renderer }) })
});
ホスティング
Github Actions
でビルドしてGithub Pages
でホスティングしている。Route 53
で一昨年くらいに取得したドメインを全く利用していなかったので、そのドメインにサブドメインを生やして使っている。
Googleアナリティクス
全てのページをプリレンダリングし、SPAではなく静的なサイトとして公開しているので、アナリティクスの対応が非常に楽になり、index.htmlにスクリプトを埋め込むだけで済んだ。
SPAだとページ遷移やイベントのたびにgtagを呼ぶことになって面倒ですからね。
今後
備忘録的にブログに何か書いていこうと思っている。
デザインなど本当に適当なので、どこかのタイミングで綺麗にするかも。
RSSとか対応したほうがいいのかな。
👋👋👋