Vue.js概要
Vue.jsはプログレッシブフレームワークで、ユーザーインターフェース構築に特化しています。2014年2月にリリースされ、ビューレイヤに焦点を当てつつ、段階的に機能拡張できる設計が特徴です。
主要概念
- HTML/CSS/JavaScript:構造・表現・動作層の基本要素
- ネットワーク通信:Axiosライブラリ
- ページ遷移:Vue Router
- 状態管理:Vuex
- UIフレームワーク:Element UI, ICE
フロントエンド技術スタック
主要フレームワーク比較
| フレームワーク | 特徴 |
|---|---|
| Angular | Google開発、TypeScript採用、MVCパターン |
| React | Facebook開発、仮想DOMによる高性能レンダリング |
| Vue | 漸進的採用、仮想DOMとモジュール化の融合 |
MVVMパターン
ViewModel層がModelとViewの仲介役となり、双方向データバインディングを実現します。
<script>
// ViewModel例
const app = new Vue({
el: '#container',
data: {
content: '初期メッセージ'
}
})
</script>
実践ガイド
基本構文
v-bind:データバインディングv-if/v-else:条件分岐v-for:リストレンダリングv-on:イベントハンドリングv-model:双方向バインディング
コンポーネント開発
// コンポーネント登録例
Vue.component('custom-item', {
props: ['itemData'],
template: '<li>{{ itemData }}</li>'
});
// 使用例
<custom-item v-for="(element, idx) in elements" :item-data="element">
</custom-item>
非同期処理
Axiosを使ったHTTP通信例:
methods: {
fetchData() {
this.axios.get('/api/data').then(response => {
this.items = response.data;
});
}
}
ルーティング
Vue Routerの基本設定:
// router.js設定例
const routes = [
{ path: '/dashboard', component: Dashboard },
{ path: '/profile', component: UserProfile }
];
const router = createRouter({
history: createWebHistory(),
routes
});
状態管理
Vuexを使ったグローバル状態管理:
// store.js例
export default createStore({
state: {
count: 0
},
mutations: {
increment(state) {
state.count++;
}
}
});
開発環境構築
- Node.jsとnpmインストール
- Vue CLIセットアップ:
npm install -g @vue/cli - プロジェクト作成:
vue create project-name
実践例カタログ
フォームバインディング
<template>
<input type="text" v-model="inputValue">
<p>入力内容: {{ inputValue }}</p>
</template>
動的コンポーネント
<component :is="currentView"></component>
ミックスイン活用
const reusableMixin = {
methods: {
utilityMethod() {
// 共通処理
}
}
}