Laravel7.XでVue.jsを実装してみる

# npmを起動してみる
npm run watchを叩くと以下のエラーメッセージが出力

```bash:terminal
'cross-env' is not recognized as an internal or external command,
operable program or batch file.
```
こちらのリンクを参考にして解決
https://stackoverflow.com/questions/45034581/laravel-5-4-cross-env-is-not-recognized-as-an-internal-or-external-command

# Bootstrap-Vueを実装するための環境構築

こちらのドキュメントを参考に実施（https://bootstrap-vue.js.org/docs）

##### npmでbootstrap-vueをインストール

```bash:terminal
# With npm
npm install vue bootstrap-vue bootstrap
```

##### bootstrap-vueをインポート

```php:resources\js\bootstrap.js
import Vue from 'vue'
import { BootstrapVue, IconsPlugin } from 'bootstrap-vue'
import 'bootstrap/dist/css/bootstrap.css'
import 'bootstrap-vue/dist/bootstrap-vue.css'
```

##### jsとBladeをVueに合わせて構成

```vuejs:resources\js\components\example.vue
<template>
    <div class="container">
        <div class="row justify-content-center">
            <div class="col-md-8">
                <div class="card">
                    <div class="card-header">{{ greeting }}</div>
                    <div class="card-body">
                        I'm an example component.
                    </div>
                </div>
            </div>
        </div>
    </div>
</template>
<script>
    module.exports = {
        data: function() {
            return {
                greeting: 'hello'
            }
        }
    }
</script>
```
```js:resources\js\app.js
require('./bootstrap');

// Bootstrap-vueの実装
import Vue from 'vue'
import { BootstrapVue, IconsPlugin } from 'bootstrap-vue'

import 'bootstrap/dist/css/bootstrap.css'
import 'bootstrap-vue/dist/bootstrap-vue.css'

window.Vue = require('vue');
import ExampleComponent from './components/example.vue'
Vue.component('example-component', ExampleComponent)

new Vue({
    el: '#app'
});
```

```php:resources\views\welcome.blade.php
<!DOCTYPE html>
<html lang="{{ str_replace('_', '-', app()->getLocale()) }}">
    <head>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <link rel="stylesheet" href="{{ mix('/css/app.css') }}">
        <title>Laravel</title>
    </head>
    <body>
        <div id="app">
            <example-component></example-component>
        </div>
    </body>
    <script src="{{ mix('/js/app.js') }}"></script>
</html>
```

##### npmとapacheを起動

```bash:npm起動
npm run watch

 DONE  Compiled successfully in 8718ms                                                                                                                                                                                                           22:31:38
       Asset      Size   Chunks             Chunk Names
/css/app.css   0 bytes  /js/app  [emitted]  /js/app
  /js/app.js  3.04 MiB  /js/app  [emitted]  /js/app
```

```shell:artisanコマンドでサーバー起動
php artisan serve
Laravel development server started: http://127.0.0.1:8000
```

##### 結果画面確認
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/208640/5498577a-9350-b58e-67ff-1d906a79319a.png)

:relaxed::relaxed: OK :relaxed::relaxed:

# Bootstrap-vueの実装

##### ナビゲーションバーに実装

コンポネントを作成して同じくapp.jsで定義する

```js:resources\js\app.js
import NavVar from './components/navbar.vue'
Vue.component('navigation-bar', NavVar)
```

定義したコンポネントをタグで作成

```php:resources\views\welcome.blade.php
<div id="app">
    <navigation-bar></navigation-bar>
    <example-component></example-component>
</div>
```