【フロントエンド入門10】Vue.jsの基本|プロジェクトのセットアップとコンポーネント開発

Vue.jsは、シンプルかつ柔軟なフレームワークとして多くのフロントエンド開発者に支持されています。Vue.jsを使うと、Webアプリケーションの開発が効率的になり、保守性も向上します。本記事では、Vue.jsの基本的な概念、プロジェクトのセットアップ方法、コンポーネント開発について初心者向けにわかりやすく解説します。

Vue.jsとは?

Vue.jsの概要

Vue.jsは、ユーザーインターフェースの構築に特化したJavaScriptフレームワークです。主にシングルページアプリケーション(SPA)の開発に適しており、リアクティブなデータバインディングを提供するため、動的なページの開発が簡単になります。

  • 軽量で高速:Vue.jsは軽量でパフォーマンスが高いです。
  • リアクティブなデータバインディング:データが変更されると、自動的に画面も更新されます。
  • コンポーネントベースの設計:UIを再利用可能な部品(コンポーネント)に分割して開発できます。

プロジェクトのセットアップ方法

1. 開発環境の準備

まず、Node.jsがインストールされていることを確認してください。Node.jsがインストールされていない場合は、公式サイトからインストールしてください。

2. Vue CLIのインストール

Vue CLIを使うと、簡単にプロジェクトのセットアップが可能です。

npm install -g @vue/cli

このコマンドを実行すると、Vue CLIがグローバルにインストールされます。

3. プロジェクトの作成

次に、Vueプロジェクトを作成します。

vue create my-vue-app

このコマンドを実行すると、プロジェクト作成ウィザードが表示されるので、必要な設定を選択してください。

4. プロジェクトの起動

プロジェクトディレクトリに移動して、開発サーバーを起動します。

cd my-vue-app
npm run serve

ブラウザでhttp://localhost:8080にアクセスすると、初期のVueアプリが表示されます。

Vue.jsの基本構造

Vue.jsの基本的なアプリケーションは、次のような構造を持っています。

例:シンプルなVueアプリ

<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Vue.js入門</title>
</head>
<body>
    <div id="app">
        {{ message }}
    </div>

    <script src="https://unpkg.com/vue@next"></script>
    <script>
        const app = Vue.createApp({
            data() {
                return {
                    message: 'こんにちは、Vue.js!'
                };
            }
        });
        app.mount('#app');
    </script>
</body>
</html>

解説

  • {{ message }}:これはVue.jsのテンプレート構文で、messageというデータがバインディングされています。
  • data():アプリケーションのデータを定義するためのメソッドです。
  • mount():Vueアプリケーションを指定した要素(この場合はid="app")にマウントします。

コンポーネントの基本

Vue.jsのコンポーネントは、UIを構成する再利用可能な部品です。コンポーネントを使うことで、コードの再利用性が高まり、保守性も向上します。

1. コンポーネントの作成

次に、基本的なコンポーネントを作成する方法を見ていきます。

例:シンプルなコンポーネント

components/HelloWorld.vue

<template>
  <div>
    <h1>{{ greeting }}</h1>
  </div>
</template>

<script>
export default {
  data() {
    return {
      greeting: 'こんにちは、コンポーネント!'
    };
  }
};
</script>

<style scoped>
  h1 {
    color: blue;
  }
</style>

解説

  • <template>:コンポーネントのHTML構造を定義します。
  • <script>:コンポーネントのデータやメソッドなどのロジックを記述します。
  • <style scoped>:このコンポーネント内に限定されたスタイルを適用します。

2. コンポーネントの使用

作成したコンポーネントを親コンポーネントで使用するには、次のようにインポートして登録します。

例:親コンポーネントでの使用

App.vue

<template>
  <div id="app">
    <HelloWorld />
  </div>
</template>

<script>
import HelloWorld from './components/HelloWorld.vue';

export default {
  components: {
    HelloWorld
  }
};
</script>

このように、コンポーネントをインポートして親コンポーネントに登録すると、再利用可能な部品として使うことができます。

リアクティブなデータバインディング

Vue.jsの大きな特徴の1つに、リアクティブなデータバインディングがあります。これは、データが変更されると自動的に画面が更新される仕組みです。

双方向バインディング(v-model)

ユーザーが入力したデータをリアルタイムで反映させるには、v-modelディレクティブを使います。

例:リアルタイムのデータバインディング

<template>
  <div>
    <input v-model="message" placeholder="メッセージを入力してください">
    <p>入力されたメッセージ:{{ message }}</p>
  </div>
</template>

<script>
export default {
  data() {
    return {
      message: ''
    };
  }
};
</script>

この例では、ユーザーがテキストボックスに入力した内容がリアルタイムで表示されます。

イベント処理(v-on)

Vue.jsでは、ユーザーの操作に応じたイベント処理を簡単に記述することができます。v-onディレクティブを使ってイベントをバインドします。

例:クリックイベントの処理

<template>
  <div>
    <button v-on:click="showAlert">クリックしてください</button>
  </div>
</template>

<script>
export default {
  methods: {
    showAlert() {
      alert('ボタンがクリックされました!');
    }
  }
};
</script>

v-onを使うと、ユーザーのクリックイベントに対して即座に応答できます。

結論

Vue.jsを使えば、シンプルなプロジェクトから大規模なWebアプリケーションまで、効率的に開発することができます。本記事で紹介した基本的なプロジェクトのセットアップやコンポーネントの使い方をマスターすることで、より高度な開発にもスムーズに進めるでしょう。次はVue Routerを使ったページ遷移やVuexによる状態管理を学び、実践的なWebアプリの開発に挑戦してみてください。