最开始组内讨论的过程中我发现,每个人对前后端分离的理解不一样,为了保证能在同一个频道讨论,先就什么是”前后端分离”达成一致。
大家一致认同的前后端分离的例子就是SPA(Single-page application),所有用到的展现数据都是后端通过异步接口(AJAX/JSONP)的方式提供的,前端只管展现。
从某种意义上来说,SPA确实做到了前后端分离,但这种方式存在两个问题:
WEB服务中,SPA类占的比例很少。很多场景下还有同步/同步+异步混合的模式,SPA不能作为一种通用的解决方案。
现阶段的SPA开发模式,接口通常是按照展现逻辑来提供的,有时候为了提高效率,后端会帮我们处理一些展现逻辑,这就意味着后端还是涉足了View层的工作,不是真正的前后端分离。
SPA式的前后端分离,是从物理层做区分(认为只要是客户端的就是前端,服务器端的就是后端),这种分法已经无法满足我们前后端分离的需求,我们认为从职责上划分才能满足目前我们的使用场景:
前端:负责View和Controller层。
后端:只负责Model层,业务处理/数据等。
前后台分离
1.前台index中controller的index.php输入
1 | <?php |
2.创建admin后台模块(index同级),MVC中controller新建index.php
1 | <?php |
访问结果
前台
后台
3.public中新增admin.php入口文件,index.php同级,且内容保持一致
访问结果:
上面的访问结果还是一样,只是一下访问的都是前台
4.实现绑定
public中admin.php和index.php的定义应用目录和加载框架引导文件中间
1 | // 定义应用目录 |
增加绑定
1 | // 绑定后台模块 |
此时使用下面URL分别访问的是前台和后台
条件是需要开启隐藏入口文件功能tp5默认开启: 文档,架构中有隐藏说明(原理就是正则)
同时可以关闭路由,在配置文件最后面增加
1 | //关闭admin模块的路由,必须写到加载框架引导文件之后 |