結局Astroに戻ってきた
QwikをやめてAstronに戻ってきた。Astro最高!
Qwikは好きです。resumableという概念は俺達の魂を震えさせる。
アイランドアーキテクチャのつらみを感じてQwikに移ったわけだったが、
Astroに戻るにあたり
を参考にした
styling

生CSS。tailwindは好きだが、最近tailwindの運用の難しさを感じ始めている。
tailwindの利点としてはjsへの依存が少ない(静的解析はあるが、無くても動くしバンドルサイズも致命的なサイズになったりしない)こと、
jsへの依存の少なさは強力だ。新興フレームワークでも大体サポートされている(vanilla-extract
やemotion
はそうはいかない)。data-
属性でスコーピングしてくれる。これで十分じゃないか?
colocationも嬉しい。私はラップトップでの作業が多いので画面を複数開かずに済むのは便利だ。とはいえコンポーネントのサイズを常識的な範囲に納めていれば、@apply
でまとめればいいんだけど)なのもあり、
そして値に制限があることの利点が一番怪しい。フォントサイズやパディングは良いだろうが、
というわけでtailwindは剥がしてAstroのCSSだけで書いた。@layer
を使ってreset
、component
、patch
の3レイヤに分け、page内のスタイルはレイヤーなしとした。patch
という謎のレイヤーはMDXだとinline codeもcode blockも同じcode
タグとして処理されるので、pre
直下にあるcode
タグのcomponent
レベルのスタイルを上書きするために導入した。
URL設計
URL構造は変えた。あまり変えるべきじゃないが、ちょっと今までのURL構造に不満があったので最後の更新のつもりで再設計。/blog
から/post
に名前を変更し、記事は全て西暦で分けることにした。ページネーションも導入し、/post/index.html
を廃止して/post/page/1
にリダイレクトさせた。paginate
を使いたかったから。本当に便利です。
SEOまわり
@astrojs/sitemap
とastro-seo
を導入。astro-seo
で提供し、set:html
で導入。Article
とBreadcrumbs
しか出していないが、他に出せるものもない。
RSS
をしてrss.xml.ts
にGETハンドラを書くだけ。
OpenGraph 画像
@vercel/og
を使って素朴な画像を生成。フォントはローカルに持っておくと重いので都度Google Fontsからダウンロードするヘルパスクリプトを書いた。
emoji
:v: remark-gemoji
数式
remark-math
+ rehype-katex
。CSSとfontをいい感じにminifyしたいが……。
TODO
- Link card
- サイト内検索(pagefindを使いvanillaで頑張る予定)
- AstroのCSSと手でnodeを作ることの相性が微妙かも
- いい感じの脚注
- ページ内anchor
- code blockのタイトル対応
- dark-mode
- 表と図のfigureと参照。これは欲しい
- クライアント画面幅による画像出し分け