Vue.js を導入しよう（Windows）

## はじめに

`Angular` 、`React` など JavaScript のフレームワークはたくさんありますが、今最も人気があると言ってもよい `Vue.js` をチョイスしました。

（実際、Qiita のタグのフォロー数もそうですし）

（まあ、Angular に関しては 1.x 系、2.x 系あるのであれですが）



## インストール方法

Vue.js のインストール方法もいろいろとあります。

CDN から直接参照させる方法、npm で落としてくる方法、そして、公式の CLI を使う方法。

> 大規模なシングルページアプリケーション開発のための足場を素早く組むために、Vue.js ではオフィシャル CLI を提供します。

公式にこう書いてありますし、大規模ではないですがやりたいこととマッチしていたので、今回は Vue CLI 3 を使ってインストールします。



## Vue.js をインストール

コマンドラインから次のコマンドでインストールします。

- Yarn を使った場合

```shell
> yarn global add @vue/cli
```

- npm を使った場合

```shell
> npm install -g @vue/cli
```

※Vue CLI 2 系までのインストール方法とは異なるので注意です！



### Vue CLI 2 系までのインストール方法

- Yarn を使った場合

```shell
> yarn global add vue-cli
```

- npm を使った場合

```shell
> npm install -g vue-cli
```



## 確認しよう

コマンドラインで次のコマンドを叩いてみましょう。

```shell
> vue --version
3.0.5
```

バージョンが表示されたらインストール完了です！



## 勢い余ってプロジェクトも作ってみよう

インストールするだけでは味気ないのでプロジェクト作成まで行ってしまいましょう！



まずはプロジェクトを作成するワークスペースに移動しましょう。

```shell
> cd my-workspace
```

CLI を使ってプロジェクトを作成します。

```shell
> vue create my-project
```

ここから対話形式でプロジェクトの設定を行います。
（選択した内容によって出てこない質問もあります）



### Please pick a preset

```shell
? Please pick a preset: (Use arrow keys)
> default (babel, eslint)
  Manually select features
```

1つ目の質問で `default` を選ぶと以降の質問はなくシンプルな構成でプロジェクト作成が行われます。

`default` を選択した場合、PWA サポートや Router 、大規模 SPA 開発などで利用される Vuex などは含まれませんので、アプリを作る場合などで `default` を選択するシーンはあまりないかもしれません。

ということで `Manually` を選択するルート。

### Check the features needed for your project

```shell
? Check the features needed for your project: (Press <space> to select, <a> to toggle all, <i> to invert selection)
>(*) Babel
 ( ) TypeScript
 ( ) Progressive Web App (PWA) Support
 ( ) Router
 ( ) Vuex
 ( ) CSS Pre-processors
 (*) Linter / Formatter
 ( ) Unit Testing
 ( ) E2E Testing
```

プロジェクトに必要な機能を選択できます。（複数選択可）

[PgUp]、[PgDn] キーで上下移動、[Space] キーで ON/OFF ができます。



### Use class-style component syntax?

```shell
? Use class-style component syntax? (Y/n)
```

クラススタイルで Vue コンポーネントを使用するかどうかを選択できます。

### Use Babel alongside TypeScript for auto-detected polyfills?

```shell
? Use Babel alongside TypeScript for auto-detected polyfills? (Y/n)
```

古いブラウザなどで ES6 で出力するために Babel を使って自動ポリフィルを行うかどうかを選択できます。

（ここ自信ないなー）



### Use history mode for router?

```shell
? Use history mode for router? (Requires proper server setup for index fallback in production) (Y/n)
```

HTML5 History モードを利用するかどうかを選択できます。



### Pick a CSS pre-processor 

```shell
? Pick a CSS pre-processor (PostCSS, Autoprefixer and CSS Modules are supported by default): (Use arrow keys)
> Sass/SCSS
  Less
  Stylus
```

使用したい CSS のプリプロセッサを選択できます。

（`Stylus` は使ったことないな）



### Pick a linter / formatter config

```shell
? Pick a linter / formatter config: (Use arrow keys)
> TSLint
  ESLint with error prevention only
  ESLint + Airbnb config
  ESLint + Standard config
  ESLint + Prettier
```

静的検証ツールに何を使うか、またその設定を選択できます。

あまり詳しくないので `ESLint + Standard config` を選択しました。



### Pick additional lint features

```shell
? Pick additional lint features: (Press <space> to select, <a> to toggle all, <i> to invert selection)
>(*) Lint on save
 ( ) Lint and fix on commit
```

Lint の実行タイミングを選択できます。（複数選択可）



### Pick a unit testing solution

```shell
? Pick a unit testing solution: (Use arrow keys)
> Mocha + Chai
  Jest
```

ユニットテストに使用するツールを選択できます。

（`Jest` は使ったことないな）



### Pick a E2E testing solution

```shell
? Pick a E2E testing solution: (Use arrow keys)
> Cypress (Chrome only)
  Nightwatch (Selenium-based)
```

E2E テストに使用するツールを選択できます。

（正直、E2E テストを導入したことがない…今回試しにやってみようか…）



### Where do you prefer placing config for Babel, PostCSS, ESLint, etc.?

```shell
? Where do you prefer placing config for Babel, PostCSS, ESLint, etc.? (Use arrow keys)
> In dedicated config files
  In package.json
```

各種ライブラリの設定をそれぞれで行うか、`package.json` で行うかを選択できます。

個人的には慣れているので `package.json`。



### Save this as a preset for future projects?

```shell
? Save this as a preset for future projects? (y/N)
```

今回のプロジェクト設定を再利用するかどうか選択できます。



### Save preset as

```shell
? Save preset as:
```

プリセット（プロジェクト設定）の保存先を入力できます。


### Please wait a minute...

この後、プロジェクト作成が行われ、

```shell
🎉  Successfully created project my-project.
👉  Get started with the following commands:

 $ cd my-project
 $ yarn serve
```

とメッセージが出たら作成完了です！



## 起動してみよう！

完了メッセージにあったように、作成されたプロジェクトに移動して、起動コマンドを入力してみましょう。

- Yarn を使った場合

```shell
> cd my-project
> yarn serve
```
※Vue CLI 2 系の場合は `yarn dev` で起動できます

- npm を使った場合

```shell
> cd my-project
> npm run serve
```
※Vue CLI 2 系の場合は `npm run dev` で起動できます


完了したら [http://localhost:8080/](http://localhost:8080/) にアクセスです！

![helloVue.png](https://qiita-image-store.s3.amazonaws.com/0/135956/3f096d27-0f28-2710-b601-bc6017859f4f.png)

ヒャッホーイ！！



おっと、失礼しました…

プロジェクトの構造はこんな感じです。

![プロジェクト構成.png](https://qiita-image-store.s3.amazonaws.com/0/135956/d6cff598-726f-1826-5e11-55fbf11ea61e.png)


## まとめ

CLI がかなり使いやすいのでプロジェクトの起動までトントン拍子で進みます。

初めて触れるプログラミング言語って、ブログとか記事は読むけどなかなか手を動かすところまではいけないんですよね～

実際のところ、**読んだだけじゃ全然身になってない**んですけどね（汗）

Vue.js の導入は難易度も高くなくすぐにアプリ起動までだどりつけますので、騙されたと思って**起動までやってみるとモチベーションアップに繋がる**かも？！



## インデックスページから来た人向け

アプリが起動すると進んだ感ありますよね！

これから少しづつ機能を増やしていきますので、よかったら他の記事も見てみてください！


:link: [Vue.js 初心者がなにか作りきってみる（願望）](https://qiita.com/kurararara/items/9c4f78eb42e657221c06)