前后端分离的好处

简介: 前后端的分离也实现了前后端架构的分离,带来的好处有:*整个项目的开发权重往前移,实现真正的前后端解耦,动态资源和静态资源分离,提高了性能和扩展性*前端静态化        *前端有且仅有静态内容,再明确些,只有HTML/CSS/JS        *其内容来自于完全静态的资源而不需要任何后台技术进行动态化组装。

前后端的分离也实现了前后端架构的分离,带来的好处有:

*整个项目的开发权重往前移,实现真正的前后端解耦,动态资源和静态资源分离,提高了性能和扩展性

*前端静态化

        *前端有且仅有静态内容,再明确些,只有HTML/CSS/JS

        *其内容来自于完全静态的资源而不需要任何后台技术进行动态化组装。

        *前端内容的运行环境和引擎完全基于浏览器本身。

*后端数据化

        *后端可以用任何语言,技术和平台实现。

        *遵循一个原则:只提供数据,不提供任何和界面表现有关的内容。

        *统一API接口,接口完全可以共用。

        *提供的数据可以用于任何其他客户端(如IOS,安卓,pc,微信小程序等)

        *通过一些代码重构,就可以大量复用接口,提升效率

*平台无关化

        *前端三大技术(HTML/CSS/JS)本身就是平台无关的。

        *后台链接部分的本质是实现合适的RESTful接口和交互JSON数据,就这两者而言,任何技术和平台都可以实现。

        *前后端交给不同的人来编写,明确划分职责,发现bug的时候可以快速定位。

        *vue.js等框架编写前端的时候,会比之前写Jquery更简单快捷。

*架构分离化

        *前端架构完全基于HTML/CSS/JS的发展和js框架的演变,由于前台是纯静态内容,大型架构方面可以考虑向CDN方向发展。

        *后端架构几乎可以基于任何语言和平台的任何解决方案,大型架构方面,RESTful Api可以考虑负载均衡,而数据,业务实现等可以考虑数据库优化和分布式。

        *在大并发情况下,可以同时水平扩展前后端服务器。

        *即使后端服务器暂时超时或者宕机,前端页面也会正常访问,只是数据刷新不出来而已,当然现在一般是服务器集群,少有出现这种现象。

*前后端流量大幅减少

        *减少后端服务器的兵法压力,除了接口以外的其他所有http请求全部转移到前端服务器上

        *页面不再是全部刷新,而是异步加载,局部刷新,减轻压力。

*表现性能的提高

        *页面性能,第一次获取的确会有所损失

        *后续使用这个页面,性能优势就完全体现了,页面的绝大部分内容都是本地缓存直接加载,远程获取的仅仅是1-2个10k的内容,其加载时间百毫秒内,这和本地页面几无区别,其前端加载和相应速度得到非常大的提高。

*安全性方面的集中优化

        *前端静态以后,一些注入式攻击在分离模式下被很好的规避。

        *而后端安全问题集中化了,主要考虑处理RESTful接口安全

        *安全架设和集中优化变得更明确和便利

实现的一些表现

*前后端人员双方约定好接口的数格式

*比如:前端需要调用一个用户信息的接口,数据格式为{name:'tielemao'}.name,后端人员只需要告诉他一个接口url(如http://www.tielemao.com/api/userInfo),并且将这个接口返回前端想要的数据即可,至于后端人员怎么实现这个接口,前端人员并不关心!

*前端页面用ajax解析URL,获取数据进行页面端的处理,然后再按照上述地址返回给后端。

*前端人员要用这个接口来做什么,后端人员同样不需要关心,双方都只专注于自己需要实现的业务逻辑。

RESTful风格的API

RESTful风格的API是前后端分离的最佳实践

        *RESTful推荐每个url能操作具体的资源

        *能准确描述服务器对资源的处理动作。

        *通常服务器对资源支持get/post/put/delete等,用来实现资源的增删改查。

        *前后端分离的话,这些api-url是对接的桥梁,采用restful接口地址,含义更清晰,见名知意。

参考: 

https://blog.csdn.net/jielysong117/article/details/68948972

相关文章
|
编解码 小程序 前端开发
微信小程序自定义顶部导航栏并适配不同机型
自定义导航栏是小程序中不可或缺的一个组件,它能够为用户提供清晰的页面结构和功能指引,提高用户体验和操作效率。在实现自定义导航栏时,需要考虑不同机型的适配问题,确保导航栏在不同设备上都能正常显示和使用。同时,还需要注意导航栏的设计风格与页面整体风格的一致性,以及导航项的布局和交互方式等细节问题。
850 4
微信小程序自定义顶部导航栏并适配不同机型
|
12月前
|
缓存 安全 Linux
阿里云龙蜥系统,部署宝塔面板
linux系统web管理工具-宝塔面板
438 10
|
11月前
|
人工智能 自然语言处理 搜索推荐
阿里云 AI 搜索开放平台集成 DeepSeek 模型
阿里云 AI 搜索开放平台最新上线 DeepSeek -R1系列模型。
1021 2
|
10月前
|
人工智能 自然语言处理 Java
30分钟速成:IntelliJ IDEA 2024下载安装与多语言开发环境配置手册
IntelliJ IDEA是Java/Kotlin开发领域的旗舰级IDE,最新版本实现了AI全栈辅助、量子计算插件和多语言互操作三大技术突破。AI辅助提升代码生成与性能优化准确率40%,量子计算插件支持1024量子位模拟,多语言混合调试性能提升300%。系统要求包括i5以上CPU、8GB内存及Windows 7+等。安装流程涵盖获取Ultimate版、配置启动器及性能优化设置。核心功能包括AI编码助手和多语言开发环境配置。提供量子算法开发和AI代码审查实战案例,并附故障排查指南和学习资源。
|
12月前
|
IDE Java API
Java游戏开发基础:从零开始制作一个简单的2D游戏
本文介绍了使用Java开发一个简单的2D避障游戏的基础流程。
1040 10
|
存储 人工智能 自然语言处理
【AI大模型】Transformers大模型库(十四):Datasets Viewer
【AI大模型】Transformers大模型库(十四):Datasets Viewer
197 0
|
存储 关系型数据库 MySQL
深入研究MySQL意向锁
MySQL意向锁是一种特殊的表级锁,由InnoDB存储引擎在操作数据之前自动添加,无需用户干预。它分为意向共享锁(IS)和意向排他锁(IX)两种。意向锁的主要作用是协调行锁和表锁的关系,优化加锁策略,避免全表扫描判断是否存在行锁。意向锁之间不会冲突,但会与表级别的排他锁冲突,从而确保数据库并发访问的一致性和完整性。简而言之,意向锁提高了数据库并发操作的性能和效率。
23288 5
|
JavaScript Java 测试技术
基于springboot+vue.js的论坛系统附带文章和源代码设计说明文档ppt
基于springboot+vue.js的论坛系统附带文章和源代码设计说明文档ppt
197 1
|
存储 安全 算法
物联网中的数据加密技术
【6月更文挑战第1天】物联网中的数据加密技术
1831 0