Vue のようなフロントエンドフレームワークには、共通の考え方 (哲学) があります。
コンポーネント指向 (Component-Based)
コードの再利用性を高め、開発効率を良くしてくれます。
- Web ページを「再利用可能な小さな部品」の集まりとして考えます。この部品一つ一つを「コンポーネント」と呼びます。
- 例えば、ボタン / ナビゲーションバー / カード型表示など、それぞれを独立したコンポーネントとして作成し、それらを組み合わせてページをつくります。
リアクティブシステム (リアクティビティ)
開発者は UI とデータを宣言的に関連付けることができ、開発効率を高めることができます。手動での DOM (Document Object Model) 操作の場面が少なくなっています。
- JavaScript のデータ (状態) の変更を自動的に検知し、それに従って HTML (UI) の表示を効率的かつ自動で更新する仕組みです。
- データバインディング (Data Binding):
- JavaScript のデータが変更されると、自動的に HTML の表示も更新されます。逆に、ユーザーが HTML 上のフォームに入力すると、 JavaScript のデータも自動的に更新される、という双方向の連携も可能です。(後述: データバインディングの種類)
データバインディングの種類
種類 | 説明 |
---|---|
片方向 --->
|
JavaScript によるデータ変更で、画面表示が自動で更新される。 |
双方向 <-->
|
JavaScript のデータと UI (画面) 入力が、相互に同期。JavaScript 処理結果が画面に反映されるだけで無く、画面入力内容が JavaScript 処理データに反映される。 |
宣言的 UI (Declarative UI)
複雑な UI でもコードがシンプルになり、開発しやすくしてくれます。
- 宣言的 UI では 最終的な状態だけを宣言します。フレームワークが、その状態になるように自動で要素を更新してくれます。(例: 「このボタンが『クリック済み』の状態になったら、色が赤でテキストは『クリック済み』になる」)
- 一方、命令的 UI というものでは一つ一つの操作を命令します。詳細に記述でき個別最適化に向きますが、コードベースの複雑化または肥大化に注意が必要です。(例: 「このボタンをクリックしたら、この要素の色を赤に変えて、テキストを『クリック済み』にする」)
これらの哲学を理解することは、 Vue だけでなく他のフレームワーク (Svelte, React, Angular 等) の学習にもきっと役立つでしょう。
Top comments (2)
nice seeing it broken down like this, tbh staying consistent with these basics is harder than it looks - you think understanding these early on really changes how fast you pick up new tools later?
Nice feedbacks !! In my opinion, understanding them is not important at the early stage. Practice and experience are first. I tried to just introduce key concepts or the terms without detail to keep beginners easy. I don't know I succeeded or failed... 😅