ASP.NET Core MVCでもVue.jsを使うためのHOW TO

# はじめに

**[前回](https://qiita.com/Midoliy/items/a2b768cc5b7284a4c653)** は **`F#`** で **`ASP.NET Core MVC + ElectronNET`** のプロジェクトを構築する HOW TO を紹介しました.

今回はそれの続きで, 上記の環境にプラス **`Vue.js`** を導入する方法を紹介します.

最終的に **[Quasar Framework](https://quasar.dev/)** を利用していくところまで紹介できればと思っていますが, とりあえず今回は **`Vue.js`** の導入までにしておきます.

---

# 事前準備

## プロジェクトを用意する

前述したとおり, 今回の記事は **[前回](https://qiita.com/Midoliy/items/a2b768cc5b7284a4c653)** の続きとなっているので, もし試したい場合は前回の記事を参考にプロジェクトを構築してください.


🚨**重要**🚨
**また, 今回の内容は ElectronNET.API とは直接関係ないので, 普通の ASP.NET Core MVC の環境でも問題ありませんし, プログラミング言語が C# の場合でも同様ですので F# に囚われる必要もありません.**


## LibMan を導入する

まずは, **`ASP.NET Core`** のクライアントサイドのライブラリを管理するためのツールを導入します.

Visual Studio で開発している分にはコマンドラインで実行する機会がないので問題になりませんが, 今回は Visual Studio Code で開発環境を構築しているので導入がほぼ必須となっています.

以下のコードを実行することで, 簡単に導入することができます.

```powershell:powershell
dotnet tool install -g Microsoft.Web.LibraryManager.Cli
```

---

# ライブラリ導入・利用方法

## Vue.js を導入する

**`LibMan`** を利用して **`Vue.js`** をインストールします.

**`ASP.NET Core MVC`** では ***`wwwroot/lib`*** にクライアントサイドのライブラリ関係を保存するのが一般的なので, 今回もそれに倣って **`Vue.js`** をインストールします.

インストール方法は非常に簡単で, 以下のコマンドを実行するだけです.

```powershell:powershell
libman install vue -d .\wwwroot\lib\vue
```

実際には以下のような画面で実行しています.
実行しているパスはプロジェクトファイルがあるフォルダとなっています.

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/125601/870e605a-6f6a-930f-ee1f-db86d6c0a901.png)

実行をすると, 初回は以下の画面のように **`DefaultProvider`** をどうするか尋ねられるので, 何も入力しないで **Enter** を押下します.

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/125601/13e3306d-012a-d22a-1357-57ac64b72fe1.png)

そうするとインストールが開始されるので完了までしばし待機します.
以下のようなメッセージが出てくれば, 無事インストール終了です.

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/125601/d060def7-eb14-fb63-e8fb-68df7f4d62d3.png)



## Vue.js を利用する

### Vue.js をインクルードする

まずは, インストールした **`Vue.js`** を利用できるようにするためにインクルードします.

***`Views/Shared/_Layout.cshtml`*** に次のような行を挿入します.

```html:_Layout.cshtml
<!-- <中略> -->
<script src="~/lib/jquery/dist/jquery.min.js"></script>
<script src="~/lib/bootstrap/dist/js/bootstrap.bundle.min.js"></script>

<!-- ↓↓↓ ここから挿入 ↓↓↓ -->
<environment include="Development">
    <script src="~/lib/vue/vue.js"></script>
</environment>
<environment exclude="Development">
    <script src="~/lib/vue/vue.min.js"></script>
</environment>
<!-- ↑↑↑ ここまで挿入 ↑↑↑ -->

<script src="~/js/site.js" asp-append-version="true"></script>
<!-- <中略> -->
```

上記のようにすることで, 開発版では **`vue.js`** を, リリース版では **`vue.min.js`** を利用するようになります.
実際の **`Visual Studio Code`** 上では以下のようになっています.

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/125601/885358ca-0d47-f0f5-289e-893ab32f7d97.png)


### Vue.js の機能を使う

それでは **[Vue.js 公式の GET STARTED](https://jp.vuejs.org/v2/guide/#%E5%AE%A3%E8%A8%80%E7%9A%84%E3%83%AC%E3%83%B3%E3%83%80%E3%83%AA%E3%83%B3%E3%82%B0)** を参考に実装してみます.

今回はTOPページである ***`Views/Home/Index.cshtml`*** で **`Vue.js`** の機能を利用してみます.

***`Views/Home/Index.cshtml`*** に以下のような修正をします.

```html:Index.cshtml
@{
    ViewData["Title"] = "Home Page";
}

<div class="text-center">
    <h1 class="display-4">Welcome!</h1>
    <p>Learn about <a href="https://docs.microsoft.com/aspnet/core">building Web apps with ASP.NET Core</a>.</p>
    <!-- ↓↓↓ ここから挿入 ↓↓↓ -->
    <div id="app">
        {{ message }}
    </div>
    <!-- ↑↑↑ ここまで挿入 ↑↑↑ -->
</div>

<!-- ↓↓↓ ここから挿入 ↓↓↓ -->
@section scripts {
    <script>
        const app = new Vue({
            el: '#app',
            data: {
                message: 'Hello Vue!'
            }
        });
    </script>
}
<!-- ↑↑↑ ここまで挿入 ↑↑↑ -->
```

実際の **`Visual Studio Code`** 上では以下のようになっています.

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/125601/3a8da7fc-773b-9f39-9fd9-54cc599c733c.png)


### 実際に動作させる

それでは実際に動作させてみて正常に動くか見てみましょう.
以下のコマンドで実行します.

```powershell:powershell
dotnet run
```

実際に実行すると, 以下のようなメッセージが出力されてくると思うので,
**Ctrlキーを押しながら, リンクをクリックします.**

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/125601/11e7281c-dd60-d7ea-6920-b02bec8d102c.png)

そうするとブラウザが立ち上がると思うので, 以下の箇所に **`Hello, Vue`** が出力されていれば成功です！

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/125601/25124050-16c4-1ba0-aa10-551b027063df.png)


---

# おわりに

以上が簡単ですが **`ASP.NET Core MVC で Vue.js を使うためのHOW TO`** となります.

お気付きかもしれませんが, 今回の方法で **`Vue.js 以外のライブラリ`** も導入することが可能です.

気になるライブラリがある方はこの方法で利用してみてください.