【簡単3 steps】Vue.jsサンプルをLaravelアプリに実装する方法

![Vue.jsサンプルをLaravelアプリに実装する方法.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1954103/773b4b6d-b45d-c20d-18eb-7d2ed9369e8f.jpeg)



今回の記事は下記の方におすすめです！

:::note info
Laravelの基礎はOK
Vue.jsの基礎はOK
でもLaravelでVue.jsサンプルを使う方法が不明
:::

自分でゴリゴリコードを書くのもありですが、最初のうちは「Vue.js」のサンプルをLaravelのサイトに埋め込むところから始めるのはありかもしれません。

今回は、「Vue.js」のサンプルが多数紹介されている海外のサイトを紹介しつつ、サンプルを実際の自分のプロジェクトに埋め込む方法について共有いたします！

今回の記事が参考になれば幸いです:relaxed:
なお、間違いやご指摘ありましたら、コメント下さると幸いです。

---

# 実行環境
- PHP 7.4
- Laravel 6.2
- Vue.js 2.5

# ゴール
- Laravelのアプリ内でvue.jsのサンプルを実装する


# ちゅうい！！

:::note warn
なお、Vue.jsがコンパイルできる環境が構築されている前提で話を進めていきます。
まだの方は、下記の記事の1)~4)を完了させ、「npm run dev」でコンパイルできる状態にしてください。
:::

[コンパイルまでの参考記事：【初心者向】Laravel 6系でVue.jsを使用する方法](https://qiita.com/5chaiji_nao/items/b6ccd3f4561c699b1a3a)

---

1. laravel/uiパッケージをインストール
「composer require laravel/ui:^1.0 --dev」
2. vue.jsのファイル生成
「php artisan ui vue」
3. 依存パッケージのインストール
「npm install」
4. js/sassファイルのコンパイル実行
「npm run dev」

:::note warn
ココまで↑は最低限実行しておいてください。詳細は上記記事にて。
:::

# Vue.jsサンプルサイト
ちなみに下記のサイトではVue.jsを使ったサンプルがまとめられています:relaxed:
「スクロール」や「ポップアップ」など便利な部品が多数まとめられているので、是非一度目を通してみてください。

[サンプルまとめサイト：Vue.js Examples](https://vuejsexamples.com/)

![VuejsサンプルをLaravelアプリに実装する方法_2021-09-12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1954103/b65c0b81-4501-bc57-0edf-28cebcec1017.png)

↑こんな感じで、サンプルによっては、Gif動画形式で、挙動を確認できるので、イメージしやすいかと思います。

# 今回埋め込むサンプル「scroll」
今回は、「スクロール」をLaravelサイトに埋め込んでいこうと思います。画面をスクロールすると、画面上部緑の進捗バーが進捗します。

[今回Laravelで使用するサンプル：scroll progress bar](https://vuejsexamples.com/simple-vue-js-plugin-for-page-scroll-progress-bar/)

↓緑のバーが進捗

![VuejsサンプルをLaravelアプリに実装する方法_スクロール_2021-09-12.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1954103/b479497b-73f0-6468-d2eb-4db7ada0c7e9.jpeg)


# 手順
1. Vue.jsサンプルをインストール
2. Laravelと紐付ける
3. インストールしたVue.jsサンプルをコンパイル


## １）Vue.jsサンプルをインストール
```
npm i vue-scroll-progress --save
```

まず、パッケージをインストールします。上記コマンドで「node_modules」ディレクトリ以下に「vue-scroll-progress」がインストールされるかと思います。

:::note info
この時点でエラーが出た方は、ご自分の開発環境のバージョンとサンプルのバージョンが競合している可能性があるので、競合しなさそうな（エラーにならない）ものをサンプルサイトから探してみてください。
:::

## 2）Laravelと紐付ける

ただインストールしただけでは使用できません。
Laravelのアプリ側からは、見えていないからですね。

そこでLaravelのアプリ側が認識してくれる場所に
「この機能を使いますよー」宣言をします。

具体的に言うと、「resources/js/app.js」ファイルへの追記ですね。

```
import VueScrollProgress from 'vue-scroll-progress';
Vue.use(VueScrollProgress);
```
「resources/js/app.js」ファイルに上記の記述を追加してください。

```js:resources/js/app.js

// （省略）

require('./bootstrap');
window.Vue = require('vue');

// 以下２行追加
import VueScrollProgress from 'vue-scroll-progress';
Vue.use(VueScrollProgress);

// （省略）

Vue.component('example-component', require('./components/ExampleComponent.vue').default);
```


「import」の意味がわからない方はこちらの記事を参考にしてみてください。

[参考：jsのimportとrequireの違い](https://qiita.com/minato-naka/items/39ecc285d1e37226a283)
[参考：JavaScriptのimportとは？](https://it-kyujin.jp/article/detail/812/)

機能ごとに分割したjsファイルを、読み込んで利用する＝インポートするイメージです。

## 3）インストールしたVue.jsサンプルをコンパイル


```
npm run dev
```

上記コマンドでコンパイルを実行すると...

![VuejsサンプルをLaravelアプリに実装する方法_完成_2021-09-12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1954103/6da23034-766d-53de-ccf3-c5a3025f748f.png)


進捗バーが表示されました！
（ちょっとわかりにくいけど、一番上の緑のボーダーですね）

# 応用事例

これを応用すれば、ユーザーが入力するフォーム画面で
進捗を表示することで、途中での離脱を防ぐ効果なんかも得られそうですね:smile:


今回は、「app.js」ファイルに記述しましたが、読み込みたい部分で
部品として使うこともできるようですよ。

```
<template>
  <VueScrollProgress></VueScrollProgress>
</template>
```


今回の記事は以上になります:relaxed:
お役に立てたなら幸いです！！

# 参考
[たった３ステップ！Laravelでnpmパッケージを使う方法](https://blog.capilano-fw.com/?p=2555)