メインコンテンツまでスキップ

「frontend」タグのついた28記事

全てのタグを見る

Composable とサーバー描画 — SSR で壊れる書き方

Composable をサーバーでも描画する構成に置いたときに壊れる書き方を扱います。window を呼び出し時点で読む形、onMounted に閉じ込めていない副作用、モジュールスコープに置いた状態がリクエスト間で漏れる問題を、実測した挙動とともに説明します。

Composables — ロジックを関数へ切り出す

状態とロジックをまとめて再利用する Composable の作り方を扱います。戻り値と引数の形、副作用の後片付けをどこに預けるか、呼べる位置の制約を、実装の挙動から説明します。

Core Web Vitals — LCP / INP / CLS から原因を絞る

Core Web Vitals の 3 指標 (LCP・INP・CLS) の定義と閾値を押さえたうえで、計測結果の組み合わせから原因を絞り込む手順を解説します。INP がサーバー応答の遅さでは悪化しない理由、CLS が寸法未指定の遅延コンテンツで悪化する仕組みを扱います。

Nuxt の基本 — ディレクトリ規約とサーバー API

Nuxt 4 の土台を扱います。app/ 配下のディレクトリ規約、ファイル名から決まるルーティング、レイアウトの当て方、server/api のファイル名規約とメソッドの絞り方を実挙動で確かめます。

Pinia — ストアの定義と分割

コンポーネントをまたいで状態を共有する Pinia を扱います。Option Store と Setup Store の違い、storeToRefs が必要になる理由、$patch と $subscribe の通知のタイミングを実測で確かめます。

Teleport と Suspense — 描画先の移動と非同期の待ち

要素を DOM ツリーの別の場所へ描く Teleport と、非同期の準備が終わるまでの表示を 1 か所にまとめる Suspense を扱います。元の位置に何が残るか、fallback が出る条件、2 度目以降に戻らない理由を実測で説明します。

Vue Router の基本 — URL とコンポーネントを対応させる

URL とコンポーネントを対応づけるルート定義を扱います。リンクとプログラムからの遷移、パラメータを含む動的ルート、レイアウトを共有する入れ子のルート、そして遅延ローディングとコード分割の現行の書き方までを実測で説明します。

Vue ガイド

Vue 3.5 の Composition API を土台に、リアクティビティの仕組みからコンポーネント設計、Vue Router、Pinia、Nuxt 4 までを全 20 章で体系化するガイド。script setup と TypeScript を前提に、なぜその書き方になるのかを各 API の設計意図から説明します。

コンポーネント間の v-model — defineModel で双方向を組む

自作コンポーネントに v-model を持たせる方法を扱います。props と emit の組を defineModel でまとめる書き方、値が親と子のどちらに置かれるか、複数の値を双方向にするときの名前の付け方、修飾子の受け取り方を説明します。

スロット — 描画の一部を親に委ねる

子コンポーネントの内部に親のマークアップを差し込むスロットを扱います。フォールバックが出る条件、スロットが渡されたかの判定、子の持つデータを親へ渡すスコープ付きスロット、defineSlots による型宣言までを扱います。

セレクタとカスケード — 結合子・疑似クラス・詳細度

CSS セレクタの種類と結合子の違い、疑似クラスと疑似要素の区別、詳細度の計算方法を解説します。ID とクラスの重みの順序、全称セレクタと結合子が詳細度に寄与しないこと、カスケードが詳細度以外の何を見ているかまでを扱います。

トランジション — 出入りのアニメーションを宣言する

要素の表示と非表示にアニメーションを付ける仕組みを扱います。クラスが付く順序、Vue が終わりを判定する方法、JavaScript で制御するときに done を待つ条件、リストの並べ替えに追従させる仕組みまでを実測で説明します。

フロントエンド

React・Vue・Tailwind CSS・shadcn/ui などフロントエンド開発に関するノートをまとめるドメインのハブ。UI 構築・スタイリング・コンポーネント設計を扱います。

ボックスモデル — width が何を指すかで崩れる

CSS のボックスモデルを、コンテンツ・パディング・ボーダー・マージンの 4 領域と box-sizing による width の解釈の違いから解説します。背景がどこまで描かれるか、マージンの相殺がいつ起きるか、border-box をリセットで当てる定石までを扱います。

レンダリングパターン — CSR / SSR / SSG / ISR

CSR・SSR・SSG・ISR の 4 つのレンダリングパターンを「どこで HTML を作るか」という一つの軸で整理します。それぞれの初回表示・鮮度・SEO・サーバー負荷のトレードオフと、要件からパターンを選ぶ手順を扱います。

宣言的 UI と命令的 UI — 状態から UI を導く

宣言的 UI と命令的 UI の違いを、同じ画面を 2 通りで書き比べながら解説します。なぜ宣言的 UI で状態と表示の不整合が減るのか、それでも DOM を直接触る必要が残るのはどこか、どんな代償を払っているのかを扱います。

楽観的更新 — レスポンスを待たずに UI を進める

楽観的更新 (Optimistic Update) の仕組みを、成功を前提に UI を先へ進めてから失敗時にロールバックする流れで解説します。何が速くなり何は速くならないか、使ってよい場面と避けるべき場面、サーバー側バリデーションを省略できない理由を扱います。