Tp5入门——前后台分离

最开始组内讨论的过程中我发现,每个人对前后端分离的理解不一样,为了保证能在同一个频道讨论,先就什么是”前后端分离”达成一致。

大家一致认同的前后端分离的例子就是SPA(Single-page application),所有用到的展现数据都是后端通过异步接口(AJAX/JSONP)的方式提供的,前端只管展现。
从某种意义上来说,SPA确实做到了前后端分离,但这种方式存在两个问题:

WEB服务中,SPA类占的比例很少。很多场景下还有同步/同步+异步混合的模式,SPA不能作为一种通用的解决方案。

现阶段的SPA开发模式,接口通常是按照展现逻辑来提供的,有时候为了提高效率,后端会帮我们处理一些展现逻辑,这就意味着后端还是涉足了View层的工作,不是真正的前后端分离。

SPA式的前后端分离,是从物理层做区分(认为只要是客户端的就是前端,服务器端的就是后端),这种分法已经无法满足我们前后端分离的需求,我们认为从职责上划分才能满足目前我们的使用场景:

前端:负责View和Controller层。
后端:只负责Model层,业务处理/数据等。

前后台分离

1.前台index中controller的index.php输入

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
namespace app\index\controller;

class Index
{
public function index()
{
return "前台方法:index";
}

public function test() {
echo "前台方法:test";
}
}

2.创建admin后台模块(index同级),MVC中controller新建index.php

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
namespace app\admin\controller;

class Index {

public function index()
{
return "后台方法:index";
}

public function test() {
echo "后台方法:test";
}
}
访问结果

3.public中新增admin.php入口文件,index.php同级,且内容保持一致

访问结果:

上面的访问结果还是一样,只是一下访问的都是前台

4.实现绑定

public中admin.php和index.php的定义应用目录和加载框架引导文件中间

1
2
3
4
5
// 定义应用目录
define('APP_PATH', __DIR__ . '/../application/');
//TODO: ....
// 加载框架引导文件
require __DIR__ . '/../thinkphp/start.php';
增加绑定
1
2
3
4
// 绑定后台模块
define("BIND_MODULE", 'admin');
// 绑定前台模块
define("BIND_MODULE", 'index');

此时使用下面URL分别访问的是前台和后台

条件是需要开启隐藏入口文件功能tp5默认开启: 文档,架构中有隐藏说明(原理就是正则)

同时可以关闭路由,在配置文件最后面增加

1
2
//关闭admin模块的路由,必须写到加载框架引导文件之后
\think\App::route(false);
坚持原创技术分享,您的支持将鼓励我继续创作!