ASP.NET Core でSPAではなくVue.jsを利用してみる（１）

　クライアント側にVue.jsをSPA（シングルページアプリケーション）ではない方法で利用することについて記述していきます。

　SPAを利用するには、ES2015(ES6)の利用がほぼ必須となり、そこで現実的に利用するためにはIE11のサポートが必要になるのですが、その場合「webpack」や「babel」などの利用がほぼ必須です。残念ながらこれらの機能はRazorPageでは利用できない（利用できるかもしれませんが恐ろしく手間がかかりそう）と思われます。しかしながら、クライアントの環境を標準の「JQuery」と「BootStrap」で書くのも今どき…。
　「React」や「Angular」ならテンプレートが有りVisualStudioでも簡単にSPAで作成できそうですが（CLIを使えばVue.jsのテンプレートも利用できるようですね）、できればRazorPageを使うほうがいいんじゃないかなと思っていて「Vue.js」ならそれも可能な感じなので挑戦してみます。CSSフレームワークはblumaを使ってみます。

# 全体
　・Vue.jsとblumaの設定（本稿）
　・[cssをblumaに変更](https://qiita.com/nosa67/items/2f5dbfe7ccc0822b57b1)
　・[バリデーションの変更](https://qiita.com/nosa67/items/eebe6371bb231606f3c9)
　・[Vue.jsでのコンポーネントの利用](https://qiita.com/nosa67/items/0c13f3db64d528803148)

## -Vue.jsの設定-

### 環境
 [「ASp.Net Core でPostgreSQLを利用してIdentityで認証を使えるようにする」](https://qiita.com/nosa67/items/49ac036a15a4f7deed8b)で作成した環境にVue.jsを組み込み、cssフレームワークをblumaに変更します。
- VisualStudio2019 Ver.16.2.3
- ASP.NET Core 2.2
- PostgreSQL 9.6 インストール済み、接続用のアカウント作成済み
- EntityFramework
- Vue.js 2.6.10
- bluma 0.7.5

### Vue.jsとblumaの組み込み
　まずはNuGetを使ってVue.js2.6.10をインストールしてください。
　cssフレームワークはダウンロードして「webroot」の「css」フォルダに「bluma.css」をコピーしてください。
　次に、「/Pages/Shared/_Layout.cshtml」のJqueryとBootStarpをすべて消して、さらにRegistの部分も削っちゃいます。そしてVue.jsとbluma.cssをとりこむようにします。

```html:_Layout.cshtml

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>@ViewData["Title"] - WebApplication1</title>

    <environment include="Development">
        <link rel="stylesheet" href="~/css/bulma.css">
        <script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.6.10/vue.js"></script>
    </environment>
    <environment exclude="Development">
        <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/bulma/0.1.2/css/bulma.css">
        <script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.6.10/vue.js" integrity="sha256-ufGElb3TnOtzl5E4c/qQnZFGP+FYEZj5kbSEdJNrw0A=" crossorigin="anonymous"></script>
    </environment>
    <link rel="stylesheet" href="~/css/site.css" />
</head>
<body>
    <header>
        <nav class="navbar navbar-expand-sm navbar-toggleable-sm navbar-light bg-white border-bottom box-shadow mb-3">
            <div class="container">
                <a class="navbar-brand" asp-area="" asp-page="/Index">WebApplication1</a>
                <button class="navbar-toggler" type="button" data-toggle="collapse" data-target=".navbar-collapse" aria-controls="navbarSupportedContent"
                        aria-expanded="false" aria-label="Toggle navigation">
                    <span class="navbar-toggler-icon"></span>
                </button>
                <div class="navbar-collapse collapse d-sm-inline-flex flex-sm-row-reverse">
                    <partial name="_LoginPartial" />
                    <ul class="navbar-nav flex-grow-1">
                        <li class="nav-item">
                            <a class="nav-link text-dark" asp-area="" asp-page="/Index">Home</a>
                        </li>
                        <li class="nav-item">
                            <a class="nav-link text-dark" asp-area="" asp-page="/Privacy">Privacy</a>
                        </li>
                    </ul>
                </div>
            </div>
        </nav>
    </header>
    <div class="container">
        <partial name="_CookieConsentPartial" />
        <main role="main" class="pb-3">
            @RenderBody()
        </main>
    </div>

    <footer class="border-top footer text-muted">
        <div class="container">
            &copy; 2019 - WebApplication1 - <a asp-area="" asp-page="/Privacy">Privacy</a>
        </div>
    </footer>

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

    @RenderSection("Scripts", required: false)
</body>
</html>

```

「~/css/site.css」と「~/js/site.js」はのこしていますが、このあたりはすきにしてください。（「~/js/site.js」は空っぽだと思いますが）
　この状態でデバッガーで起動すると画面はえらいことになっています。

　次回はログイン画面を簡単にして、buma対応にしていきます。