如何做前后端动静分离

现在有个项目想做一下前端和后端分离开发,应该怎么做?主要是数据通信和权限管理这边应该怎么做。

阅读 9.9k
5 个回答

我们的 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 部分的玩意儿,一般常见的就是类似于 CookieAccept 等等,用来告诉服务器一些请求者的基本信息, 后端的权限验证基本就是利用这一部分实现的,不完全需要利用 Cookie 来作为实现 Session 的唯一渠道,完全可以按照规范实现自己的一套认证和会话流程

最后就是请求的数据体,对于 GETDELETE 请求,不存在传递数据(GET 就是获取,DELETE 就是删除,何来传递数据?),但是对于 POSTPUT 则需要通过请求体传递数据,比如表单提交、比如文件上传。

后端利用请求中大大小小的数据,完全可以构建一个层次分明(利用中间件实现)的过滤流程,配合合理的路由模块和控制器,就很容易实现后端的分离。

前端玩法也很多,我就拿 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

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
1 篇内容引用
宣传栏