Laravel使用vue / vue路由器进行路由

时间:2020-10-26 09:45:50

标签: laravel vue.js routes

我基本上是使用VueRouter创建所有运行良好的路由。但是,我的应用程序是使用Laravel构建的。因此,如果刷新任何路由,都会收到一条错误消息,即未定义路由。因此,在每个控制器中的每一分钟,我都必须添加一个索引函数。这只是返回我的app.blade的视图,它只是通常的标签等,并加载我的单页面应用程序。我只是想知道是否有更清洁的解决方案?我想我可以将return视图移动到单个Controller中,并让我的Controller对此进行扩展。但是我只是想知道我是否还有更好的方法?

即我通过VueRouter的其中一条路线:

{
    path: "/clients",
    name: "clients",
    component: () => import(/* webpackChunkName: "clients" */ "../resources/js/components/Views/Clients/Clients.vue")
},

clients.php文件中的路由

Route::get('/clients', [App\Http\Controllers\ClientController::class, 'index'])->name('clients');

然后使用ClientController索引功能

public function index()
{
    return view('app');
}

最好在其他地方完成app.blade的加载,而无需为每个控制器指定。任何帮助将不胜感激,以确保一切都高效完成!

谢谢!

1 个答案:

答案 0 :(得分:0)

这是我为其中一个项目(也是Vue和Laravel中的单页应用程序)解决的问题的方法:https://github.com/lyyka/laravel-vue-blog-spa/blob/master/routes/web.php

只需在您的路线文件中输入以下代码:

Route::get('/{any}', function () {
    return view('welcome');
})->where("any", ".*");

在我的欢迎视图中,我有:

@extends('layouts.app')

@section('content')
    <div class = "container">
        <router-view></router-view>
    </div>
@endsection

基本上,这将返回您对任何URL的应用视图,因此您的Vue SPA应该可以正常工作。通常,将回调函数放在您的路由文件中不是一个好习惯,但是在这种情况下,由于它是SPA,您甚至不会使用路由文件,因此此解决方案可以通过! :)