Heim >Backend-Entwicklung >PHP-Tutorial >javascript - 如何做前后端动静分离
现在有个项目想做一下前端和后端分离开发,应该怎么做?主要是数据通信和权限管理这边应该怎么做。
现在有个项目想做一下前端和后端分离开发,应该怎么做?主要是数据通信和权限管理这边应该怎么做。
我们的 ERP 系统就是前后端完全分离,毫无关联。
后端用的是改造的 Laravel 框架,将业务拆分、路由拆分,来分离后端复杂的权限验证,同时对外依旧是简单明确的 RESTful API。
前端采用 Vue.js + Bootstrap 构建。
题主在问这个问题之前,有必要对 HTTP 协议有一定的了解,这样你就不会在一些细枝末节无限纠结。因为本质上前后端的区别就在于一个是请求方、一个是响应方。
以往的不分离的开发,前端的请求往往是通过点击某个超链接,然后由浏览器接管后续,浏览器自行发出请求获取数据并刷新整个页面,后端则是收到请求后,由 PHP 这类后端脚本直接输出一个完整的 HTML 页面。
后来 Ajax 来了,则是由 Javascript 脚本触发事件,可控的让浏览器在特定条件下发出有限定的请求头的 HTTP 请求,并且收到响应后,依旧由脚本自行处理而不是以往浏览器直接渲染输出,这就使得前端可以实现局部刷新的功能。
理解这个以后就很简单了,后端只是根据请求输出数据,请求中无非包含几个关键数据:
请求的资源是什么
请求的资源的限定条件
请求的参数
请求的数据体
请求的资源就是我们说的 Request URI,比如向 http://www.a.com/order/128141/detail 发起的请求,资源就是 /order/128141/detail
。
资源限定条件对于任何请求都适用,往往以 Query String(查询字符串)
体现,比如 http://www.a.com/shop/goods?name=test&sort=time&page=2
,这里面 ?
后面的部分就是查询字符串,正如其 查询
二字的意义,就是用来限定资源结果集的。
查询字符串常常被小白误解为就是用来传递数据的,并将 $_GET 和 $_POST 都作为传递和获取数据的方式,如果长期都有这种意识,PHP 活该被人瞧不起啊。。
请求参数就是一些在 Header 部分的玩意儿,一般常见的就是类似于 Cookie
,Accept
等等,用来告诉服务器一些请求者的基本信息, 后端的权限验证基本就是利用这一部分实现的,不完全需要利用 Cookie 来作为实现 Session 的唯一渠道,完全可以按照规范实现自己的一套认证和会话流程 。
最后就是请求的数据体,对于 GET
,DELETE
请求,不存在传递数据(GET 就是获取,DELETE
就是删除,何来传递数据?),但是对于 POST
,PUT
则需要通过请求体传递数据,比如表单提交、比如文件上传。
后端利用请求中大大小小的数据,完全可以构建一个层次分明(利用中间件实现)的过滤流程,配合合理的路由模块和控制器,就很容易实现后端的分离。
前端玩法也很多,我就拿 ajax 这种最简单实用的来说。无论你是否使用了前端框架,ajax 是不会变的,它是一种请求的渠道。
说了上面这么多,你必须要明白要分离,就要分清职责。前端就是获取数据的,那么利用 ajax 发请求获取数据就好了,拿到数据该渲染哪就渲染哪,至于数据,只要结构正确,一律认定就是正确的。
// 写了一堆,,有空再补充
前端可以选一套bootstrap模板,配合vuejs,后台用php中的yii2框架,设计好restful接口,yii2自带rbac模块,很方便的。前后台用ajax传输数据。
前端纯html-frameset开发,和后端统一ajax交互,后端设过滤器验证session。
前端用Bootstrap/Google MDL+Angular2 JS,后端用Laravel,装上RBAC扩展(传送门)就可以动静分离了,Laravel的REST风格的路由还是很好用的。
先回答问题:session验证+RESTFUL
推荐:
前端:vuejs+bootstrap
后台:Springboot