目录
回复内容:
补充说明
首页 后端开发 php教程 javascript - 如何做前后端动静分离

javascript - 如何做前后端动静分离

Jul 06, 2016 pm 01:52 PM
html java javascript php

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

回复内容:

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

我们的 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

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

您如何在PHP中解析和处理HTML/XML? 您如何在PHP中解析和处理HTML/XML? Feb 07, 2025 am 11:57 AM

本教程演示了如何使用PHP有效地处理XML文档。 XML(可扩展的标记语言)是一种用于人类可读性和机器解析的多功能文本标记语言。它通常用于数据存储

在PHP API中说明JSON Web令牌(JWT)及其用例。 在PHP API中说明JSON Web令牌(JWT)及其用例。 Apr 05, 2025 am 12:04 AM

JWT是一种基于JSON的开放标准,用于在各方之间安全地传输信息,主要用于身份验证和信息交换。1.JWT由Header、Payload和Signature三部分组成。2.JWT的工作原理包括生成JWT、验证JWT和解析Payload三个步骤。3.在PHP中使用JWT进行身份验证时,可以生成和验证JWT,并在高级用法中包含用户角色和权限信息。4.常见错误包括签名验证失败、令牌过期和Payload过大,调试技巧包括使用调试工具和日志记录。5.性能优化和最佳实践包括使用合适的签名算法、合理设置有效期、

php程序在字符串中计数元音 php程序在字符串中计数元音 Feb 07, 2025 pm 12:12 PM

字符串是由字符组成的序列,包括字母、数字和符号。本教程将学习如何使用不同的方法在PHP中计算给定字符串中元音的数量。英语中的元音是a、e、i、o、u,它们可以是大写或小写。 什么是元音? 元音是代表特定语音的字母字符。英语中共有五个元音,包括大写和小写: a, e, i, o, u 示例 1 输入:字符串 = "Tutorialspoint" 输出:6 解释 字符串 "Tutorialspoint" 中的元音是 u、o、i、a、o、i。总共有 6 个元

解释PHP中的晚期静态绑定(静态::)。 解释PHP中的晚期静态绑定(静态::)。 Apr 03, 2025 am 12:04 AM

静态绑定(static::)在PHP中实现晚期静态绑定(LSB),允许在静态上下文中引用调用类而非定义类。1)解析过程在运行时进行,2)在继承关系中向上查找调用类,3)可能带来性能开销。

突破或从Java 8流返回? 突破或从Java 8流返回? Feb 07, 2025 pm 12:09 PM

Java 8引入了Stream API,提供了一种强大且表达力丰富的处理数据集合的方式。然而,使用Stream时,一个常见问题是:如何从forEach操作中中断或返回? 传统循环允许提前中断或返回,但Stream的forEach方法并不直接支持这种方式。本文将解释原因,并探讨在Stream处理系统中实现提前终止的替代方法。 延伸阅读: Java Stream API改进 理解Stream forEach forEach方法是一个终端操作,它对Stream中的每个元素执行一个操作。它的设计意图是处

什么是PHP魔术方法(__ -construct,__destruct,__call,__get,__ set等)并提供用例? 什么是PHP魔术方法(__ -construct,__destruct,__call,__get,__ set等)并提供用例? Apr 03, 2025 am 12:03 AM

PHP的魔法方法有哪些?PHP的魔法方法包括:1.\_\_construct,用于初始化对象;2.\_\_destruct,用于清理资源;3.\_\_call,处理不存在的方法调用;4.\_\_get,实现动态属性访问;5.\_\_set,实现动态属性设置。这些方法在特定情况下自动调用,提升代码的灵活性和效率。

说明匹配表达式(PHP 8)及其与开关的不同。 说明匹配表达式(PHP 8)及其与开关的不同。 Apr 06, 2025 am 12:03 AM

在PHP8 中,match表达式是一种新的控制结构,用于根据表达式的值返回不同的结果。1)它类似于switch语句,但返回值而非执行语句块。2)match表达式使用严格比较(===),提升了安全性。3)它避免了switch语句中可能的break遗漏问题,增强了代码的简洁性和可读性。

HTML,CSS和JavaScript的角色:核心职责 HTML,CSS和JavaScript的角色:核心职责 Apr 08, 2025 pm 07:05 PM

HTML定义网页结构,CSS负责样式和布局,JavaScript赋予动态交互。三者在网页开发中各司其职,共同构建丰富多彩的网站。

See all articles