【发布时间】:2020-04-04 22:58:23
【问题描述】:
我正在尝试构建一个 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(多页面应用)吗?
【问题讨论】:
标签: laravel vue.js multi-page-application