我正在尝试构建Laravel 5.5 + VueJs多页面应用程序。我不想使用SPA(单页应用程序)方法来使它看起来像是一个多页应用程序。
URL为/register
的注册页面就是这种情况。使用命令php artisan make:auth
,可以获得与注册相关的文件。情况是:
在web.php
中,我有:
Auth::routes();
在app.js
中,我有:
window.Vue = require('vue');
const app = new Vue({
el: '#app',components: {
Register: require('./components/Register.vue')
}
});
我的layout.blade.php
驻留在resources/views/
文件夹中,并且具有以下内容:
<div id="app">
<?php
var_dump($component);
?>
@if (isset($component))
<component :is={{ $component }} >
@endif
@yield('content')
@if (isset($component))
</component>
@endif
</div>
register.blade.php
文件包含以下内容:
@extends('layout',['component' => 'Register'])
@section('content')
@endsection
Register.vue
停留在resources/js/components/
内并且具有以下内容:
<template>
<div class="container">
<div class="row">
<div class="col-md-8 col-md-offset-2">
<div class="panel panel-default">
<div class="panel-heading">Example Component</div>
<div class="panel-body">
I'm an example component!
</div>
</div>
</div>
</div>
</div>
</template>
<script>
export default {
mounted() {
console.log('Register Component mounted.')
}
}
</script>
所以我预期的工作流程是:首先将调用register.blade.php
,它继承了layout.blade.php
并发送应该在此处呈现的Register
组件作为数据。
我自己也不知道register.blade.php
将如何在行的数据中将Register
作为参数:
@extends('layout',['component' => 'Register'])
在查看页面源代码时,我什至看不到页面中包含app.js
文件。
当然,我每次运行页面之前都要运行npm run dev
命令。
问题1:上述方法有什么问题?但是正确的方法应该是什么?
编辑:
我的webpack.mix.js
有:
let mix = require('laravel-mix');
mix.js('resources/assets/js/app.js','public/js')
.styles([
'resources/assets/css/style.css'
],'public/css/style.css')
;
mix.options({
extractVueStyles: 'public/css/vue-style.css'
});
EDIT2:
在页面中,我没有看到Register
组件的内容。我忘了提过。
EDIT3: 问题2 :Laravel + VueJs组合不是真正意义上的MPA(多页应用程序)吗?