Laravel 与 vue 的路由器混用该如何配置

前端同事用vue 做了一个项目,其中使用了 vue-router,文件结构如下图

![文件上传中...]()

前端的同事直接给了我这么一个文件夹,
vue项目单独全部用一个文件夹存放
然后我的项目打算用laravel 写
请教我该如何配置我的laravel, 让我的laravel 前端部分使用 vue 的路由,然后laravel 只是提供接口(json),,

《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
讨论数量: 3
  1. 前后端分开部署
  2. 把前端放到 public/vue-app 中, 在 Nginx 中配置
    # Vue 路由
    location /vue-app/ {
    try_files $uri $uri/ /vue-app/index.html;
    }
    # Laravel
    location / {
    try_files $uri $uri/ /index.php$is_args$args;
    }
  3. 这样返回用了 Vue 的模板,,,不推荐这种,,,
    Route::get('vue-app/{path}', function () {
    return view('path.to.vue');
    })->where('path', '.*');
4年前 评论
largezhou (作者) 4年前
ivanzhang528 (楼主) 4年前
largezhou (作者) 4年前

哈哈,正好解决了这个问题,我来回答一下,首先单页面vue-router跳转,他只是监听路由,并不会直接跳转。vue-router的路由是不会通过laravel的路由的,那么我们设置一下web.php

Route::any('{all}','WebController@index')->where(['all'=>'.*']);

这样我们就通过一句代码转发了所有的url给vue-router去处理的

然后我们再将api的路由写在api.php里面

4年前 评论
Hachiko 4年前

不出意外的话,前端给文件夹里面应该有个 ***.html 文件,把文件拷贝到 public 目录下,这里以 public/spa/index.html 举例
路由定义 :

Route::get(/spa/','SpaController@index')

控制器定义 :

public function index() {
    $url = config('app.url');
    // do something
    return redirect($url . '/spa/index.html#/dashboard');
}

说明

4年前 评论
爱吃藤藤菜 4年前
Hachiko (作者) 4年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!