3
6

More than 3 years have passed since last update.

【入門】Laravel×Vue.js①〜セットアップ編〜

Posted at

はじめに

PHPのフレームワークであるLaravelで作成したアプリケーションに
JavaScriptのフレームワークであるVue.jsを連携させる方法について説明します。

Node.jsのインストール

Node.jsのパッケージ管理ツールnpmを使うので、
Vue.jsを利用するためにはNode.jsが必要です。

まず、https://nodejs.org/ja/からインストールしましょう
推奨版、最新版どちらでも構わないので、インストールしてください。
スクリーンショット 2019-12-21 3.22.29.png

Vue.jsをアプリケーションへインストールする

インストールするパッケージ一覧が記述されているpackage.jsonを変更した後、
npmを使ってVue.jsをインストール、ビルドします。

package.jsonの変更

package.jsonにはインストールするパッケージがリストとして記述されています。
Vue.js関連のパッケージはvuevue-template-compilerです。

package.json
{
    "private": true,
    "scripts": {
        "dev": "npm run development",
        "development": "node node_modules/cross-env/dist/bin/cross-env.js NODE_ENV=development node_modules/webpack/bin/webpack.js --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js",
        "watch": "node node_modules/cross-env/dist/bin/cross-env.js NODE_ENV=development node_modules/webpack/bin/webpack.js --watch --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js",
        "watch-poll": "node node_modules/cross-env/dist/bin/cross-env.js NODE_ENV=development node_modules/webpack/bin/webpack.js --watch --watch-poll --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js",
        "hot": "node node_modules/cross-env/dist/bin/cross-env.js NODE_ENV=development node_modules/webpack-dev-server/bin/webpack-dev-server.js --inline --hot --config=node_modules/laravel-mix/setup/webpack.config.js",
        "prod": "npm run production",
        "production": "node node_modules/cross-env/dist/bin/cross-env.js NODE_ENV=production node_modules/webpack/bin/webpack.js --no-progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js"
    },
    "devDependencies": {
        "axios": "^0.19.0",
        "bootstrap": "^4.0.0",
        "cross-env": "^5.2.0",
        "jquery": "^3.2",
        "laravel-mix": "^4.0.7",
        "lodash": "^4.17.5",
        "popper.js": "^1.12",
        "resolve-url-loader": "^2.3.1",
        "sass": "^1.15.2",
        "sass-loader": "^7.1.0",
        "tar": "^4.4.8",
        "vue": "^2.5.17",
        "vue-template-compiler": "^2.6.10"
    },
    "dependencies": {
        "node-sass": "^4.12.0",
        "quill": "^1.3.6"
    }
}

Vue.jsのインストール

上のパッケージをインストールしましょう

ターミナル
$ npm install

Vue.jsのビルド

インストールしただけではVue.jsは使えないので、ビルドしていきましょう

ターミナル
$ npm run dev

コンポーネントの登録

作成されたコンポーネントをしましょう

resources/app.js
require('./bootstrap');

window.Vue = require('vue');

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

const app = new Vue({
    el: '#app'
});
Vue.component('example-component', require('./components/ExampleComponent.vue').default);

上記の記述でresources/js/components/ExampleComponent.vue
example-componentという名前で登録します

ビルド

Vue.js関連のファイルを変更した時はビルドしなければ、変更は反映されません。

ターミナル
$ npm run dev

コンポーネント

サンプルのコンポーネントを確認しましょう
ない場合は手動で作成してください

resources/js/components/ExampleComponent.vue
<template>
    <div class="row justify-content-center">
        <div class="col-md-8">
            <div class="card">
                <div class="card-header">Example Component</div>
                <div class="card_body">
                    I'm an example component.
                </div>
            </div>
        </div>
    </div>
</template>

<script>
    export default {
        mouted() {
            console.log('Component moundted.')
        }
    }
</script>

内容については関係ないので、今回は説明を省きます。
単純なことなので、時間がある時に一度見てください。

ビューファイルでテンプレートを参照する

コンポーネントをビューファイルで参照する方法について説明します。
適当なファイルに挿入して見てください

resources/views/****.blade.php
<head>
    <link href="{{ mix('/css/app.css') }}" rel="stylesheet" type="text/css">
    <meta name="csrf-token" content="{{csrf_token()}}">
</head>
<div id="app">
    <example-component></example-component>
</div>
<script src="{{ mix('/js/app.js')  }}"></script>

スタイルシート

<link href="{{ mix('/css/app.css')  }}" rel="stylesheet" type="text/css">

linkタグでスタイルシートを参照しています
しかし、スタイルシートはresources/csspublic/cssに2つあります。
そのため、mix('/css/app.css")で2つのスタイルシートをまとめて読み込むことができます
 

CSRFトークン

<meta name="csrf-token" content="{{csrf_token()}}">

LaravelでVue.jsを利用する時はCSRFトークンを利用することが推奨されています。
特に理由がない場合は記述しましょう

コンポーネントの参照

<div id="app">
    <example-component></example-component>
</div>

コンポーネントはid="app"の領域で使用できます
example-componentタグで上で作成したコンポーネントを呼び出します。

スクリプトファイル

<script src="{{ mix('/js/app.js')  }}"></script>

スタイルシートと同様に、mix('/css/app.css")で2つのスクリプトファイルをまとめて読み込んでいます。
必ず<example-component>の下に記述してください。

動作確認

最後に動作確認をしましょう
忘れずにビルドしましょう

ターミナル
$ npm run dev

上記のような内容が表示されれば完了です!!

疑問、気になるところがございましたら、質問、コメントよろしくお願いします!!!

3
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
6