Laradoc環境のLaravelとVueを導入済みの前提で進めます。
VueRouterをインストール
以下のコマンドを実行してVueRouterをインストール。
npm install vue-router
VueRouterを使用する
Laravelルーティングの設定を変更
Laravel用にルーティングを変更します。
Laravel側は全てindex.phpを返却しないとLaravel側にもルーティングの用意する必要があります。
※直接URLを入力された場合の対策
<?php
Route::get('/{any}', function () {
// return view('welcome');
return view('vue');
})->where('any', '.*');
コンポーネントの作成
コンポーネントファイルの作成。
VueRouterの動作確認のために2ファイル作成します。
<template>
<div>
<p>
<router-link to='/world'>Hello</router-link>
</p>
</div>
</template>
<template>
<div>
<p>
<router-link to='/hello'>World</router-link>
</p>
</div>
</template>
app.jsの編集
app.jsのを編集。
VueRouterの設定を入れます。
import Vue from 'vue'
import VueRouter from 'vue-router'
require('./bootstrap');
Vue.use(VueRouter);
const router = new VueRouter({
mode: 'history',
relative: true,
routes: [
{ path: '/', component: require('./components/Hello.vue').default },
{ path: '/hello', component: require('./components/Hello.vue').default },
{ path: '/world', component: require('./components/World.vue').default },
]
});
new Vue({
router,
}).$mount('#app');
Viewの作成
Viewの作成
<!DOCTYPE html>
<html lang="{{ config('app.locale')}}">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="csrf-token" content="{{ csrf_token() }}">
<title>Laravel + Vue</title>
<link rel="stylesheet" href="{{ asset('css/app.css') }}">
<base href="<?php echo url('/');?>">
</head>
<body>
<div id="app">
<router-view></router-view>
</div>
<script src="{{ asset('js/app.js') }}" ></script>
</body>
</html>
実行
以下のコマンドを実行するとタスクが実行します。
// 全タスク実行 npm run dev // 全タスク実行を実行し、出力を圧縮 npm run production // アセットの変更監視 npm run watch // アセットの変更監視(watchが効かない場合) npm run watch-poll
最後にhttps://localhost/public/helloにアクセスしたら画面が出ます。
わかりづらいですがVueRouterを使って遷移しています。
まとめ
VueRouterを導入することフロント側とサーバーサイド側に切り分けが可能になります。
これによりRESTfulな作りにすることが可能です。


0 件のコメント :
コメントを投稿