热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

前后端为什么要分开写-

大家都知道,通常公司都会要求我们前端和后端分开来写,为什么要这么做呢?这次给大家带来前后端为什么要分开写,下面就是实战案例,一起来看一下。
大家都知道,通常公司都会要求我们前端和后端分开来写,为什么要这么做呢?这次给大家带来前后端为什么要分开写,下面就是实战案例,一起来看一下。

如果你没有尝试过前后端分离的工作流程,那么可以先试想一下这样的流程改变:
把流程从
PM:“我要这个功能”
后端:“这个先找前端做个模板”
前端:“模板做完了”
后端:“我来对接一下,这里样式不对”
前端:“我改完了”
后端:“功能交付”
PM:“春节要加这个活动”
后端:“这个先找前端改个模板”
前端:“模板做完了”
后端:“我来对接一下,这里样式不对”
前端:“我改完了”
后端:“功能交付”

变成

PM:“我要这个功能”
前端:“我要接口”
后端:“接口完成了”
前端:“我来对接一下,功能交付”
PM:“春节要加这个活动”
前端:“需要增加接口”
后端:“接口完成了”
前端:“我来对接一下,功能交付”

由此可见,前后端分离的主要概念就是:后台只需提供API接口,前端调用AJAX实现数据呈现。

现状与分歧

作为一名前端开发人员,我们应该尝试一些新颖的技术,完善每一个细节性的问题,不断突破自我。虽然前后端分离已经算不上什么新颖的技术或思路,但是目前很多后台开发人员甚至前端开发人员都没有接触过。

据我个人的了解,如果在一个部门里,部门人员全是后台开发人员,前端的一些页面也是由后台人员完成的,那么前后端分离对于他们而言可能是一片未知的领域,项目大多是前后端强耦合的,甚至不存在前端的概念。

在不重视前端的公司或部门,不了解前后端分离这也无可厚非。大多的创业型公司,一个部门就一两个前端,而且一人负责几个项目,很少有合作完成一个项目的时候。因为没有什么标准可言(这里的标准指的是代码组织结构),所以就是前端人员切好图写好页面扔给后端,以后端代码结构为标准。虽然一些公司有前后端分离的意识,但都不知该如何去实践。在那时,部门的后台人员认为前后端分离就是后台不再需要写HTML和JS了,可以交给前端来做了,然而这只能叫做前后端分工。

以上讲述的是一种情况: 不了解前后端分离,也不知如何去实践的。下面还有一种情况:了解前后端分离,但不想去尝试的。

针对第二种情况,很多人也做过相应的解释,其实这就涉及到“前后端分离的利弊”问题。很多后台人员会认为自己所做的那一套没有问题,即便后台套用前端html也是司空见惯,一直是大势所趋,后台MVC框架也是这么推荐使用的,很合理。这时候前端开发人员在部门中的话语权往往是不够的,或者认为后台开发人员的意见永远是对的,没有主观性。

相反,也有可能是后台开发人员非常推荐前后端分离,而前端开发人员不想去实践的。这时候前端会认为后台开发人员在瞎折腾,之前前后端不分离项目做起来都很顺利,分离了反而会给自己带来额外的工作量和学习成本,而这就取决于前端的技术能力和见识了。

当然,这也是我个人认为的前后端分离所存在的一些现状和分歧所在。

场景与要求

对于前后端分离的应用场景,不是所有的场景都适合,但是大多数项目都能够通过前后端分离来实现。

由于我主要从事企业级后台应用的前端开发工作,个人认为对于后台应用的开发来说,前后端分离带来的利是远大于弊的。

大多数后台应用我们都可以做成SPA应用(单页应用),而单页应用最主要的特点就是局部刷新,这通过前端控制路由调用AJAX,后台提供接口便可以实现,而且这样的方式用户体验更加友好,网页加载更加快速,开发和维护成本也降低了不少,效率明显提升。

同样的,在展示类网站和移动APP页面中前后端分离也同样试用。前后端不分离的情况下,服务端要单独针对Web端做处理,返回完整HTML,这样势必增加服务端的复杂度,可维护性差,而web端需要加载完整的HTML,一定程度上影响网页性能,这对于移动端性能为王的地方非常的不友好。

随着前端技术的发展和迭代,前端MVC框架应运而生,利用目前主流的前端框架,如React、Vue、Angular等我们可以轻松的构建起一个无需服务器端渲染就可以展示的网站,同时这类框架都提供了前端路由功能,后台可以不再控制路由的跳转,将原本属于前端的业务逻辑全部丢给前端,这样前后端分离可以说是最为彻底。下面是一段前端控制路由的代码:

'use strict'export default function (router) {
    router.map({        '/': {            component: function (resolve) {                require(['./PC.vue'], resolve)
            }
        },        '/m/:params': {            component: function (resolve) {                require(['./Mobile.vue'], resolve)
            }
        },        '/p': {            component: function (resolve) {                require(['./PC.vue'], resolve)
            },            subRoutes: {                '/process/:username': {                    component: function (resolve) {                        require(['./components/Process.vue'], resolve)
                    }
                }
            }
        }
    })
}

前后端分离的实现对技术人员尤其是前端人员的要求会上升一个层次,前端的工作不只是切页面写模板或是处理一些简单的js逻辑,前端需要处理服务器返回的各种数据格式,还需要掌握一系列的数据处理逻辑、MVC思想和各种主流框架。

优势与意义

对于前后端分离的意义我们也可以看做是前端渲染的意义,我主要总结了下面四点:

彻底解放前端
前端不再需要向后台提供模板或是后台在前端html中嵌入后台代码,如:

这是前后端耦合的,可读性差。

上面是前端渲染的一段代码,前端通过AJAX调用后台接口,数据逻辑放在前端,由前端维护。

提高工作效率,分工更加明确
前后端分离的工作流程可以使前端只关注前端的事,后台只关心后台的活,两者开发可以同时进行,在后台还没有时间提供接口的时候,前端可以先将数据写死或者调用本地的json文件即可,页面的增加和路由的修改也不必再去麻烦后台,开发更加灵活。

局部性能提升
通过前端路由的配置,我们可以实现页面的按需加载,无需一开始加载首页便加载网站的所有的资源,服务器也不再需要解析前端页面,在页面交互及用户体验上有所提升。

降低维护成本
通过目前主流的前端MVC框架,我们可以非常快速的定位及发现问题的所在,客户端的问题不再需要后台人员参与及调试,代码重构及可维护性增强。

心得与体会:

一路走来,项目一个接着一个,从一开始的后台控制路由、后台渲染页面到现在的前端控制路由、前端渲染数据,工作流程和方式都发生了很大的变化。每当遇到下面情形的时候,我都会为前后端分离带来的优势而感慨一番:

1、项目一开始制作前端页面的时候,我不再需要后台给我配置服务器环境了
2、项目的前端文件可以在需要调用后台接口的时候丢进服务器就好了,完全不需要事先放进去
3、增加一个项目页面需要配置路由的时候不再需要让后台同事给我加了,自己前端搞定
4、前端文件里不再掺杂后台的代码逻辑了,看起来舒服多了
5、页面跳转比之前更加流畅了,局部渲染局部加载非常快速
6、页面模板可以重复使用了,前端组件化开发提高了开发效率

等等。面对快速发展的前端,我们应该去适应其带来的工作方式和流程的改变,目前的前后端分离的工作方式必然是今后的趋势所在,作为一个前端开发人员,我们应当承担这个普及前端新知识和改变现状的职责。

相信看了本文案例你已经掌握了方法,更多精彩请关注 第一PHP社区 其它相关文章!

相关阅读:

Angularjs如何实现mvvm式选项卡?案列+代码

vue2.0的项目非常实用的代码集合

以上就是前后端为什么要分开写的详细内容,更多请关注 第一PHP社区 其它相关文章!


推荐阅读
  • 在springmvc框架中,前台ajax调用方法,对图片批量下载,如何弹出提示保存位置选框?Controller方法 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 本文介绍了前端人员必须知道的三个问题,即前端都做哪些事、前端都需要哪些技术,以及前端的发展阶段。初级阶段包括HTML、CSS、JavaScript和jQuery的基础知识。进阶阶段涵盖了面向对象编程、响应式设计、Ajax、HTML5等新兴技术。高级阶段包括架构基础、模块化开发、预编译和前沿规范等内容。此外,还介绍了一些后端服务,如Node.js。 ... [详细]
  • 本文介绍了如何使用jQuery和AJAX来实现动态更新两个div的方法。通过调用PHP文件并返回JSON字符串,可以将不同的文本分别插入到两个div中,从而实现页面的动态更新。 ... [详细]
  • 本文介绍了Java后台Jsonp处理方法及其应用场景。首先解释了Jsonp是一个非官方的协议,它允许在服务器端通过Script tags返回至客户端,并通过javascript callback的形式实现跨域访问。然后介绍了JSON系统开发方法,它是一种面向数据结构的分析和设计方法,以活动为中心,将一连串的活动顺序组合成一个完整的工作进程。接着给出了一个客户端示例代码,使用了jQuery的ajax方法请求一个Jsonp数据。 ... [详细]
  • 本文介绍了DataTables插件的官方网站以及其基本特点和使用方法,包括分页处理、数据过滤、数据排序、数据类型检测、列宽度自动适应、CSS定制样式、隐藏列等功能。同时还介绍了其易用性、可扩展性和灵活性,以及国际化和动态创建表格的功能。此外,还提供了参数初始化和延迟加载的示例代码。 ... [详细]
  • 如何实现织梦DedeCms全站伪静态
    本文介绍了如何通过修改织梦DedeCms源代码来实现全站伪静态,以提高管理和SEO效果。全站伪静态可以避免重复URL的问题,同时通过使用mod_rewrite伪静态模块和.htaccess正则表达式,可以更好地适应搜索引擎的需求。文章还提到了一些相关的技术和工具,如Ubuntu、qt编程、tomcat端口、爬虫、php request根目录等。 ... [详细]
  • Java实战之电影在线观看系统的实现
    本文介绍了Java实战之电影在线观看系统的实现过程。首先对项目进行了简述,然后展示了系统的效果图。接着介绍了系统的核心代码,包括后台用户管理控制器、电影管理控制器和前台电影控制器。最后对项目的环境配置和使用的技术进行了说明,包括JSP、Spring、SpringMVC、MyBatis、html、css、JavaScript、JQuery、Ajax、layui和maven等。 ... [详细]
  • 如何使用Java获取服务器硬件信息和磁盘负载率
    本文介绍了使用Java编程语言获取服务器硬件信息和磁盘负载率的方法。首先在远程服务器上搭建一个支持服务端语言的HTTP服务,并获取服务器的磁盘信息,并将结果输出。然后在本地使用JS编写一个AJAX脚本,远程请求服务端的程序,得到结果并展示给用户。其中还介绍了如何提取硬盘序列号的方法。 ... [详细]
  • 本文介绍了使用PHP实现断点续传乱序合并文件的方法和源码。由于网络原因,文件需要分割成多个部分发送,因此无法按顺序接收。文章中提供了merge2.php的源码,通过使用shuffle函数打乱文件读取顺序,实现了乱序合并文件的功能。同时,还介绍了filesize、glob、unlink、fopen等相关函数的使用。阅读本文可以了解如何使用PHP实现断点续传乱序合并文件的具体步骤。 ... [详细]
  • 本文介绍了高校天文共享平台的开发过程中的思考和规划。该平台旨在为高校学生提供天象预报、科普知识、观测活动、图片分享等功能。文章分析了项目的技术栈选择、网站前端布局、业务流程、数据库结构等方面,并总结了项目存在的问题,如前后端未分离、代码混乱等。作者表示希望通过记录和规划,能够理清思路,进一步完善该平台。 ... [详细]
  • SpringMVC接收请求参数的方式总结
    本文总结了在SpringMVC开发中处理控制器参数的各种方式,包括处理使用@RequestParam注解的参数、MultipartFile类型参数和Simple类型参数的RequestParamMethodArgumentResolver,处理@RequestBody注解的参数的RequestResponseBodyMethodProcessor,以及PathVariableMapMethodArgumentResol等子类。 ... [详细]
  • 在Android中解析Gson解析json数据是很方便快捷的,可以直接将json数据解析成java对象或者集合。使用Gson解析json成对象时,默认将json里对应字段的值解析到java对象里对应字段的属性里面。然而,当我们自己定义的java对象里的属性名与json里的字段名不一样时,我们可以使用@SerializedName注解来将对象里的属性跟json里字段对应值匹配起来。本文介绍了使用@SerializedName注解解析json数据的方法,并给出了具体的使用示例。 ... [详细]
  • MVC设计模式的介绍和演化过程
    本文介绍了MVC设计模式的基本概念和原理,以及在实际项目中的演化过程。通过分离视图、模型和控制器,实现了代码的解耦和重用,提高了项目的可维护性和可扩展性。详细讲解了分离视图、分离模型和分离控制器的具体步骤和规则,以及它们在项目中的应用。同时,还介绍了基础模型的封装和控制器的命名规则。该文章适合对MVC设计模式感兴趣的读者阅读和学习。 ... [详细]
  • ps:写的第一个,不足之处,欢迎拍砖---只是想用自己的方法一步步去实现一些框架看似高大上的小功能(比如说模型中的toArraytoJsonsetAtt ... [详细]
author-avatar
嘎嘎19850820
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有