Vue.js Introduction - 基礎概念
ロードマップ: Vue.js学習ロードマップ
What(何についてか)
VueはUI構築用のJavaScriptフレームワーク。標準HTML・CSS・JSの上に構築され、宣言的レンダリングとリアクティビティを提供する。
Why(なぜ必要か)
- 宣言的レンダリング: JSの状態に基づいてHTML出力を宣言的に記述できる。手動のDOM操作が不要になる
- リアクティビティ: 状態変更を自動検知してDOMを効率的に更新する。
document.getElementById()での手動書き換えが不要 - プログレッシブ: 小規模(HTMLの強化)から大規模(SPA/SSR)まで段階的に導入可能。どの規模でも核心の知識は共通
How(どう動くか)
2つのコア機能
graph LR A["JavaScript State"] -->|Declarative Rendering| B["Template (HTML)"] A -->|Reactivity| B B -->|User Action| A
- 宣言的レンダリング: テンプレート構文で状態 → HTML出力を記述
- リアクティビティ: 状態変更を自動追跡 → DOM更新
プログレッシブフレームワーク
graph TB A["HTMLに直接埋め込み<br/>(ビルド不要)"] --> B["Web Components"] B --> C["SPA"] C --> D["SSR / SSG"] C --> E["Desktop / Mobile"]
規模に応じた柔軟な導入が可能。いずれの場合も基礎知識は共通。
Single-File Components (SFC)
.vue ファイルに3つのブロックをカプセル化:
<script setup>
import { ref } from 'vue'
const count = ref(0)
</script>
<template>
<button @click="count++">Count is: {{ count }}</button>
</template>
<style scoped>
button { font-weight: bold; }
</style>| ブロック | 役割 |
|---|---|
<script setup> | ロジック(状態・関数) |
<template> | HTMLテンプレート |
<style scoped> | コンポーネント限定CSS |
scoped を付けるとCSSがそのコンポーネントにだけ適用される。
API Styles
| 項目 | Options API | Composition API |
|---|---|---|
| 状態の定義 | data() の中 | ref() / reactive() で直接 |
| 関数の定義 | methods の中 | 普通の関数として直接 |
| ライフサイクル | mounted() 等 | onMounted() 等(import必要) |
this | 必要 | 不要 |
| コード構成 | オプション種別ごと | ロジック単位でまとめられる |
| TypeScript相性 | 普通 | 抜群 |
本格的なアプリ開発には Composition API + SFC が推奨。
Key Concepts
| 用語 | 説明 |
|---|---|
| 宣言的レンダリング | 状態に基づいてHTMLを宣言的に記述する仕組み |
| リアクティビティ | 状態変更を自動検知してDOMを更新する仕組み |
| SFC | .vueファイルでロジック・テンプレート・スタイルを1つにまとめる形式 |
| プログレッシブFW | 小規模から大規模まで段階的に導入できる柔軟性 |
<script setup> | Composition APIを簡潔に書くためのSFC構文。コンパイル時変換でboilerplate削減 |
scoped | CSSをそのコンポーネントにだけ適用する属性 |