Vueでよく使うデザインパターン
Vue.jsはフロントエンド開発において、とても人気が高く使われるフレームワークのひとつです。Vue.jsを使うことで、コンポーネントベースアーキテクチャの実装が比較的容易になります。Vue.jsを使う上でよく使うデザインパターンについて説明します。
1. 単一ファイルコンポーネント
Vue.jsでは、HTML、JavaScript、CSSを1つのファイルにまとめることができます。これが単一ファイルコンポーネント(Single File Components)であり、ファイル拡張子は「.vue」です。Vue.jsのコンポーネントは、すべて単一ファイルコンポーネントで作成することが推奨されています。
例えば、以下のような単一ファイルコンポーネントを作成することができます。
<template>
<div>
<h1>こんにちは!</h1>
</div>
</template>
<script>
export default {
name: 'HelloWorld',
data () {
return {
message: 'Vue.jsにようこそ!'
}
}
}
</script>
<style>
h1 {
color: red;
font-size: 24px;
}
</style>
2. Vuex
VuexはVue.jsアプリケーションのための状態管理ライブラリです。Vuexを使うことで、アプリケーション全体で共通の状態を管理することができます。Vuexの状態管理は、単方向データフローを使っています。
Vuexは以下の4つの要素から構成されます。
- state:アプリケーションの状態を保持する場所
- getter:stateを元に算出された値を返す関数
- mutation:stateを変更するための関数
- action:mutationを呼び出す関数
例えば、以下のようにVuex storeを作成することができます。
import Vue from 'vue'
import Vuex from 'vuex'
Vue.use(Vuex)
const store = new Vuex.Store({
state: {
count: 0
},
getters: {
doubleCount: state => state.count * 2
},
mutations: {
increment (state) {
state.count++
}
},
actions: {
incrementAsync ({ commit }) {
setTimeout(() => {
commit('increment')
}, 1000)
}
}
})
export default store
3. コンポーネントのprops
Vue.jsのコンポーネントは、propsを使って他のコンポーネントから値を受け取ることができます。propsはコンポーネントのプロパティのことで、親コンポーネントから子コンポーネントに渡すことができます。
// 親コンポーネント
<template>
<div>
<child-component :message="hello"></child-component>
</div>
</template>
<script>
import ChildComponent from './ChildComponent.vue'
export default {
name: 'ParentComponent',
components: {
'child-component': ChildComponent
},
data () {
return {
hello: 'こんにちは!'
}
}
}
</script>
// 子コンポーネント
<template>
<div>{{ message }}</div>
</template>
<script>
export default {
name: 'ChildComponent',
props: {
message: String
}
}
</script>
4. コンポーネント描画の条件分岐と繰り返し
Vue.jsのコンポーネントは、v-if、v-showを使って描画条件分岐をすることができます。また、v-forを使ってオブジェクトや配列をループすることができます。
<template>
<div>
<div v-if="showMessage">
こんにちは!
</div>
<div v-show="showMessage">
こんにちは!
</div>
<ul>
<li v-for="(item, index) in items" :key="index">
{{ item }}
</li>
</ul>
</div>
</template>
<script>
export default {
name: 'List',
data () {
return {
showMessage: true,
items: ['りんご', 'ばなな', 'いちご']
}
}
}
</script>
5. カスタムディレクティブ
Vue.jsでは、カスタムディレクティブを作成することができます。カスタムディレクティブを作成することで、HTMLタグに対して独自の動作を追加できます。
// カスタムディレクティブ定義
Vue.directive('my-directive', {
bind: function (el, binding) {
el.style.backgroundColor = binding.value.color
}
})
// カスタムディレクティブ使用
<template>
<div v-my-directive="{ color: 'red' }">
カスタムディレクティブ
</div>
</template>
以上が、Vue.jsでよく使うデザインパターンの紹介でした。Vue.jsを使う上で、単一ファイルコンポーネントやVuex、props、条件分岐と繰り返し、カスタムディレクティブなどの知識は必須です。これらの概念を理解していれば、より高度なVue.jsの開発も行うことができます。