Vue.jsって何だろう？

## 1.はじめに
しばらくVue.jsについて記事をまとめていましたが、「そもそもVue.jsってどのような言語なのか？」についてまとめていなかったので、まとめていきます。

## 2.Vue.jsとは
JavaScriptをベースにしたフロントエンドフレームワークの1つです。
WebアプリケーションのUI（ユーザーインターフェース（※1））を効率的に構築するために使われます。

※1　画面、見た目や操作感を指すこともある（[参考](https://wa3.i-3-i.info/word1375.html)）


### ●特徴
### ①リアクティブシステム
→双方向バインディング（データと画面間の情報をリアルタイムで同期させる技術）により、下記画像のようにデータの変更が即座に画面に反映される仕組みを簡単に構築できます。


```javaScript

 // 即座に反映したいデータをv-modelで定義するだけで実装可能


<v-text-field  v-model="login_id"></v-text-field>
入力した文字は{{ login_id }}

```

（vuetifyを使用しています。）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3762100/7b23ea28-068c-4c90-adfd-f84a1adddbee.png)


```javaScript

// javascript側でも値を変更した場合、画面側にもその変更がリアルタイムで反映される

<v-text-field  v-model="login_id"></v-text-field>
入力した文字は{{ reactive_login_id }}

 <script>
　（中略）
       computed:{
            reactive_login_id() {
                return this.login_id + "change";
            }
        },
　（中略）
</script>

```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3762100/136acbd0-6deb-47a8-bcdd-05ce2cd9f5a8.png)

### ②軽量で読み込みが早い
コンポーネント（部品）ごとに管理しており、画面の変更があった際に変更があったコンポーネントのみを再描画（読み込み）しているため、読み込みが早いとされています。

下記画像のようにボタンの色を変えた場合に、画面A全体を再読み込みするのではなく色が変わった部分のみ再読み込みを行っています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3762100/389a55af-3cf8-46f3-9d4e-7430a4371c94.png)

### ③シンプルで学習しやすい
→標準的な HTML、CSS、JavaScript をもとに構成されているため、追加で覚えることが少なく、学習コストが低いと言われています。（次回以降に解説していきます。）

## 3.Vue.jsが向いているサービス


### 1. 中小規模のWebアプリケーション
Vueは軽量でシンプルであるため、中小規模のWebアプリケーションの開発に向いているとされています。
反対に、シンプルな開発を得意としているため、大規模な開発には向かないと言われています。

### 2. インタラクティブなWebサイト（動きの多いページ）
VueはリアクティブなUIが得意なので、ボタンを押したらすぐに表示が変わるようなWebサイトに向いています。

### 3. シングルページアプリケーション（SPA）
Vueは Vue Routerというライブラリを使うことで、ページの切り替えを素早く行う SPA（Single Page Application（※2）） を簡単に作れます。

※2 　1つのページでコンテンツの切り替えを行う（画面遷移を行わない）Web アプリケーションの構造。例：Slackやnote


## 4.環境構築の方法（Windows）

色々やり方はありますが、私は下記で環境構築を行いました。

①[参考コンフル](https://qiita.com/C_HERO/items/318fe65871f8e53e8c80)を基にNode.js（npm）をインストール
②@vue/cliをnpmでインストール
```
 npm install -g @vue/cli
```
③vueプロジェクトを作成
```
 vue create プロジェクト名
```
④[環境構築編](https://qiita.com/kari_account/items/7854b6faf158495533c2)を基に必要なライブラリをnpmでインストール&設定

⑤SpringBootを使っていたため、設定ファイルやbuildの設定を変更（[参考コンフルのvueの設定変更 & build](https://qiita.com/kaburankattara/items/607c7bd77fda2491d342#vue%E3%81%AE%E8%A8%AD%E5%AE%9A%E5%A4%89%E6%9B%B4--build)）

## 5.さいごに
次回からはVue.jsの基本的な書き方などをしばらくはまとめていきます。
ご興味ある方は次回以降も見ていただけますと幸いです。

## 参考資料
①[双方向バインディングとは？初心者にもわかる基本解説！共起語・同意語も併せて解説！](https://toha.fromation.co.jp/archives/16653)
②[UIとは](https://wa3.i-3-i.info/word1375.html)
③[Vue.jsとはなにかを初心者向けに解説！どのような開発者におすすめのフレームワーク？](https://saas.n-works.link/tool/about-vue-js)
④[SPA（シングルページアプリケーション）とは？開発事例やメリットデメリット](https://www.offshore-kaihatsu.com/contents/general/what-spa/#:~:text=SPA%E3%81%8C%E6%8E%A1%E7%94%A8%E3%81%95%E3%82%8C%E3%81%A6%E3%81%84%E3%82%8B%E3%82%A2%E3%83%97%E3%83%AA%E3%83%BB%E3%82%B5%E3%83%BC%E3%83%93%E3%82%B9%E3%81%AE%E4%BA%8B%E4%BE%8B,-SPA%E3%81%AE%E6%A6%82%E8%A6%81&text=%E9%9D%9E%E5%90%8C%E6%9C%9F%E7%9A%84%E3%81%AB%E8%AA%AD%E3%81%BF%E8%BE%BC%E3%81%BF%E3%82%92,%E3%81%A6%E3%81%84%E3%82%8B%E3%81%AE%E3%81%A0%E3%81%A8%E3%81%8B%E3%80%82)
⑤[【Vue.js】10分でできる！ ～ Vue.jsのインストール → プロジェクト作成と起動まで～](https://qiita.com/C_HERO/items/318fe65871f8e53e8c80)
⑥[SpringBoot上でVueを動かしてみた](https://qiita.com/kaburankattara/items/607c7bd77fda2491d342)