Vue.jsで学ぶ！.vueファイルを使ったコンポーネント開発の基本と実践

`.vue`ファイルは、以下の3つの部分を持つことが一般的です：

1. **テンプレート (`template`)**: HTMLのような構造を持ち、表示するコンテンツやレイアウトを記述します。
2. **スクリプト (`script`)**: コンポーネントのロジックやデータ、メソッドを記述します。
3. **スタイル (`style`)**: このコンポーネント専用のCSSスタイルを記述します。

### `.vue`ファイルの基本的な構成例

```vue
<template>
  <div class="greeting">
    <h1>{{ message }}</h1>
    <button @click="changeMessage">メッセージを変更</button>
  </div>
</template>

<script>
export default {
  data() {
    return {
      message: 'こんにちは、Vue.js!'
    };
  },
  methods: {
    changeMessage() {
      this.message = 'メッセージが変わりました！';
    }
  }
};
</script>

<style scoped>
.greeting {
  text-align: center;
}
button {
  margin-top: 20px;
  padding: 10px;
}
</style>
```

### 上記のコードの説明

- **`<template>`**: ここにはHTMLの構造が記述されています。Vue.jsでは、このテンプレート内でデータバインディング（`{{ message }}`）やイベントハンドリング（`@click="changeMessage"`）を使って、動的なコンテンツを表示できます。
- **`<script>`**: このセクションには、コンポーネントのロジック（データやメソッド）を記述します。`data()`メソッドでコンポーネントの状態を定義し、`methods`でメソッドを定義します。
- **`<style>`**: ここでCSSスタイルを定義します。`scoped`を使うことで、このコンポーネント専用のスタイルを適用することができます。

### Vue.jsコンポーネントの構成
Vue.jsでは、上記の`.vue`ファイルをコンポーネントとして使い、`App.vue`などのルートコンポーネントを作成し、そこから子コンポーネントを呼び出していく構成が一般的です。

#### 例: 複数のコンポーネントを組み合わせる

1. **`App.vue`（親コンポーネント）**

```vue
<template>
  <div id="app">
    <h1>Vue.jsのコンポーネント例</h1>
    <greeting></greeting>
  </div>
</template>

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

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

<style>
#app {
  text-align: center;
}
</style>
```

2. **`Greeting.vue`（子コンポーネント）**

```vue
<template>
  <div class="greeting">
    <h2>{{ message }}</h2>
    <button @click="changeMessage">メッセージを変更</button>
  </div>
</template>

<script>
export default {
  data() {
    return {
      message: 'こんにちは、Vue.js!'
    };
  },
  methods: {
    changeMessage() {
      this.message = 'メッセージが変わりました！';
    }
  }
};
</script>

<style scoped>
.greeting {
  margin-top: 20px;
}
button {
  padding: 8px 16px;
  margin-top: 10px;
}
</style>
```

### 上記コードの流れ

- `App.vue`では、`Greeting`コンポーネントをインポートし、`components`オプションを使って登録しています。これにより、`<greeting></greeting>`タグを使って子コンポーネントを表示できます。
- `Greeting.vue`は実際のコンポーネントで、ユーザーのアクションに応じてメッセージを変更する機能を持っています。

### 実行環境のセットアップ

このようにVue.jsでは、`App.vue`などのコンポーネントを使って、複雑なUIを組み立てることができます。次に、`.vue`ファイルを実際に動かすための開発環境を整える方法を簡単に説明します。

#### 1. `npm create vue@latest`を使ってプロジェクトをセットアップ

Vue.jsの開発を始めるためには、`npm create vue@latest`（`create-vue`）を使うと便利です。以下の手順で環境をセットアップできます。

```bash
# 新しいVueプロジェクトを作成
npm create vue@latest my-project

# プロジェクトディレクトリに移動
cd my-project

# 依存関係をインストール
npm install

# 開発サーバーを起動
npm run dev
```

これで、Vueの開発環境が整い、`.vue`ファイルを使ってコンポーネントを開発できます。

#### 2. `App.vue`や`Greeting.vue`を作成

`src/components`フォルダ内にコンポーネントファイルを作成し、`App.vue`や他のコンポーネントでインポートして使います。

#### 3. 開発サーバーで表示

`npm run dev`を実行すると、`http://localhost:5173`でブラウザからアプリケーションを確認できます。コードを変更するたびに自動的にリロードされ、リアルタイムで結果を確認できます。

---

### まとめ

- Vue.jsでは、`.vue`ファイルを使ってコンポーネントを定義し、`template`、`script`、`style`を1つのファイルにまとめて開発することができます。
- `npm create vue@latest`を使うと、簡単に開発環境をセットアップでき、`.vue`ファイルを使ったコンポーネントベースの開発が行えます。
- 親コンポーネントから子コンポーネントをインポートして、再利用可能なコンポーネントを作成することができます。

これにより、複雑なフロントエンドの構造をシンプルに管理できますし、コンポーネントの再利用性や保守性も向上します。

--- 

https://qiita.com/SMZPP/items/b4ee53d2346c149814da