【架构】thinkphp前后端分离项目中的前端配置

技术栈:thinkphp6、vue

前端代码打包后放在public目录下,需要使用框架的路由规则来展示前端页面。

单应用模式

目录

├─app 应用目录
│  ├─controller         控制器目录
│  ├─model              模型目录
│  ├─view               视图目录
│  └─ ...               更多类库目录
│
├─public                WEB目录(对外访问目录)
│  ├─admin         			管理后台
│  │  └─index.html          管理后台
│  ├─mobile   	      		手机端
│  │  └─index.html          手机端入口
│  ├─pc                     PC端
│  │  └─index.html          PC端入口
│  ├─index.php          入口文件
│  ├─router.php         快速测试文件
│  └─.htaccess          用于apache的重写
│
├─view                  视图目录
├─config                应用配置目录
├─route                 路由定义目录
├─runtime               应用的运行时目录

方案1:普通路由

域名入口
public function index()
{
    $template = app()->getRootPath() . 'public/pc/index.html';
    if (Request::isMobile()) {
        $template = app()->getRootPath() . 'public/mobile/index.html';
    }
    if (file_exists($template)) {
        return view($template);
    }
    return '你好';
}
路由配置
// 管理后台
Route::rule('admin/:any', function () {
    return view(app()->getRootPath() . 'public/admin/index.html');
})->pattern(['any' => '\w+']);

// 手机端
Route::rule('mobile/:any', function () {
    return view(app()->getRootPath() . 'public/mobile/index.html');
})->pattern(['any' => '\w+']);

// PC端
Route::rule('pc/:any', function () {
    return view(app()->getRootPath() . 'public/pc/index.html');
})->pattern(['any' => '\w+']);

方案2:强制路由

在路由配置文件中设置

return [
    // ...
    'url_route_must'		=>  true,
];
路由配置
Route::group('/', function () {
    // 管理后台
    Route::group('admin', function () {
        return view(app()->getRootPath() . 'public/admin/index.html');
    });
    Route::miss(function() {
        if (!request()->isMobile() && is_dir(app()->getRootPath() . 'public/pc')) {
            return view(app()->getRootPath() . 'public/pc/index.html');
        } else {
            return view(app()->getRootPath() . 'public/mobile/index.html');
        }
    });
});

注册一个单独的MISS路由可以在没有匹配到所有的路由规则后执行。一旦设置了MISS路由,相当于开启了强制路由模式。

多应用模式

如果采用的是多应用模式,每个应用的路由都是完全独立的,并且路由地址不能跨应用(除非采用重定向路由)。

├─app 应用目录
│  ├─index              主应用
│  │  ├─controller      控制器目录
│  │  ├─model           模型目录
│  │  ├─view            视图目录
│  │  ├─config          配置目录
│  │  ├─route           路由目录
│  │  └─ ...            更多类库目录
│  │ 
│  ├─admin              后台应用
│  │  ├─controller      控制器目录
│  │  ├─model           模型目录
│  │  ├─view            视图目录
│  │  ├─config          配置目录
│  │  ├─route           路由目录
│  │  └─ ...            更多类库目录
│
├─public                WEB目录(对外访问目录)
│  ├─admin         	    管理后台
│  │  └─index.html      管理后台入口
│  ├─mobile   	        手机端
│  │  └─index.html      手机端入口
│  ├─pc                 PC端
│  │  └─index.html      PC端入口
│  ├─admin.php          后台入口文件
│  ├─index.php          入口文件
│  ├─router.php         快速测试文件
│  └─.htaccess          用于apache的重写
│
├─config                全局应用配置目录
├─runtime               运行时目录
│  ├─index              index应用运行时目录
│  └─admin              admin应用运行时目录

参考文档:路由定义变量规则路由分组MISS路由

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Vue和ThinkPHP可以作为前后端分离架构进行开发。前后端分离是指前端和后端的开发分别独立进行,通过API接口进行数据交互。下面是对Vue和ThinkPHP前后端分离架构的角色和使用方式的简要描述: 1. Vue: Vue是一个用于构建用户界面的JavaScript框架,它可以通过组件化的方式来构建前端应用程序。在前后端分离架构,Vue通常负责用户界面、用户交互和数据展示等方面的开发。它通过向后端API发送请求获取数据,并将数据进行展示和交互处理。 2. ThinkPHPThinkPHP是一个使用PHP语言开发的Web应用开发框架,它提供了一套完整的MVC架构,可以用于快速开发后端应用程序。在前后端分离架构ThinkPHP通常负责处理前端发送的请求,并根据业务逻辑进行数据处理、数据库操作等后端任务。它将处理结果通过API接口返回给前端。 在实际开发,可以按照以下步骤进行前后端分离架构的开发: 1. 使用Vue构建前端应用程序,包括设计界面、处理用户交互和发送请求等。 2. 使用ThinkPHP构建后端应用程序,包括定义API接口、处理请求、处理业务逻辑等。 3. 前端通过Vue的HTTP库或者其他方式向后端发送请求,获取数据并进行展示和交互处理。 4. 后端接收前端发送的请求,进行相应的处理,并返回处理结果给前端。 5. 前端根据后端返回的数据进行相应的展示和交互操作。 这种前后端分离架构可以提高开发效率、降低耦合度,并且可以实现前后端的独立扩展和维护。同时,通过API接口的方式,也可以方便地实现多端(如Web、移动端)的共享和复用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ironprosper

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值