微信号:frontshow

介绍:InfoQ大前端技术社群:囊括前端、移动、Node全栈一线技术,紧跟业界发展步伐。

专访彭星老师:探究前后端分离存在的意义

2018-05-24 17:40 极客邦企业服务

你的团队是否出现过以下的问题:

  • 随着业务复杂度增加,前后端职责渐渐分工不清

  • 传统开发模式下,团队整体开发效率低下。

  • 项目代码的可维护性很差

  • 由于后端框架限制,无法应对前端开发复杂多变的需求

如果你的团队遇到了以上的问题,那么是时候考虑用前后端分离来解决了。对于目前的 web 业务场景来说,前后端分离已经变得越来越流行了,究其原因,正是这几年随着互联网业务呈几何式增长,对开发人员的要求越来越高,纯浏览器端的响应式已经不能满足企业对用户体验的高要求,往往工程师们不得不针对不同的终端来定制新的版本,为了提高开发效率,前后端分离的需求越来越被重视。

尽管前后端分离越来越被重视,但实际在 Web 应用开发过程中,业界对前后端的分界线似乎一直都没有确定的概念。所以这就带来了很多的问题,是不是一定要做到前后端只通过 JSON 来交流,组件化、工程化不需要依赖后端去实现呢?究竟什么样子的团队适合做前后端分离呢?带着这些问题我们有幸的采访到了百度资深前端工程师,Lavas 团队负责人彭星,看看他是如何看待前后端分离的。

InfoQ:能否先简单的自我介绍一下。

彭星老师:Hi,我是彭星,目前是百度 Lavas 团队的负责人,11 年武汉大学毕业后这七年的时间一直在百度,在 Node.js,前后端分离领域有着多年的经验,最近投身 PWA 方面的研究,希望站点能够以最小的代价接入 PWA,实现体验和成本上的双重收益。

InfoQ:您在前后端分离方面有多年的经验,您感觉为什么现在大家都要做前后端分离,这么做的动机是什么?

彭星老师:这个问题很大,做前后端分离还是要看具体的应用场景,大部分情况下,还是为了让前后端分工更明确,从而提高开发合作效率。因为以前的开发模式中经常存在前后端职责不清楚的状况,经过这几年的摸索,业内达成的共识是,前后端分离的核心在于在于模板的与数据结合的位置,以及模板的控制权在谁手里,现在统一的做法是模版的控制权在前端这边,这样后端可以专心于业务逻辑、数据处理和持久化等。前端更专心于呈现,着重处理用户体验相关的问题。

InfoQ:那前后端分离主要解决了哪些问题呢?

彭星老师:有一点在之前已经说过,就是让前后端的分工更明确了,除此之外,我认为它还解决了以下几个问题:

  1. 减小前后端的耦合度,降低开发联调环境部署成本,让前端开发不依赖后端环境,提升开发效率;

  2. 前端发挥空间更大,解锁很多能力,前端能够结合后端能力做一些以前做不到的优化工作;

  3. 代码维护成本相比之前降低很多;

InfoQ:在企业中,什么样子的技术团队规模适合做前后端分离,一定要是团队规模很大的大公司么?

彭星老师:我觉得只要团队内有能够 Hold 住前后端分离的人,就应该做前后端分离,和团队规模并没太大关系。有的人会说,创业团队追求的简单快速上线,不应该做前后端分离,这其实是一种错误的认知。首先,前后端分离难度并不高,前后端分离有很多种形式,SPA 也是前后端分离的一种形态;其次,从业务发展来看,创业团队的业务追求快速迭代,前后端分离也非常适合这种模式;最后,业务发展到最后再来做前后端分离,不如一开始就打好基础。

InfoQ:您在做前后端分离中遇到过最大的阻碍和问题有哪些?

彭星老师:最大的障碍是最开始的时候如何说服团队的架构师和领导采取前后端分离方案,把 Controller 交给前端团队来做。其次是,前端开发人员对后端的业务不熟,初次体验,会写出低性能甚至有问题的代码。不过,这个问题可以通过使用一些 Node.js 框架来让开发人员只负责编写业务逻辑,减小出现问题的可能性。

InfoQ:最后一个问题,目前的前后端分离方案,比如 SPA,基于 Node.js 等,这些解决方案都有哪些优缺点?

彭星老师:SPA 和基于 Node.js 的前后端分离都是前后端分离的一种形态,两者都做到了前后端分离,在前后端分离的层面上,并没有太大不同,主要的不同还是体现在技术形态上,一个是前端 JS 渲染,一个是后端 JS 渲染。

SPA(Single Page Application)。前后端分工很明确,后端负责数据接口,前端负责展现和交互,而且体验很好,它的缺点是首屏加载资源较多,导致首屏渲染慢,白屏时间长,而且,一个很关键的点,SPA 对 SEO 支持的不是很好。

基于 Node.js 的前后端分离(这里需要解释一些,这里说的基于 Node.js 的前后端分离不是指的类似于 Vue SSR 这样的结构,而是用 Node.js 渲染的多页应用)。这种方式的好处是白屏时间短,SEO 支持的很好,但是页面与页面切换开销比较大,没有平滑的过渡动画,这点不比 SPA。

结束了对彭星老师的采访,我们可以看出,随着前端的丰富,前后端分离已经是必然的一个趋势。各种技术如雨后春笋一般,层出不穷。而 Node.js 的出现,是前端真正意义上变成了大前端。回首 Node.js 这门语言的发展,起初作为一门后端语言,但是无心插柳的成为了前端工程师提高效率的工具,成为大前端发展的基石。

在大前端的趋势下,无论你是后端工程师,亦或是前端工程师,前后端分离都是一个永远绕不过去的问题,而 Node.js 亦逐渐成为一个成熟的前后端分离的解决方案。但 Node.js 究竟在前后端分离当中还有哪些更深层的应用?前后端分离的解决办法究竟是什么?前后端分离会给业务或者项目管理上带来哪些收益?以上都可能是你现在心中的疑惑。

  活动推荐

6 月 23-24 日,在北京国际会议中心举办的 GMTC 全球大前端技术深度培训,在前后端分离有多年经验的百度资深前端工程师,Lavas 团队负责人彭星老师与会现场为大家答疑解惑,并针对为什么要做前端分离,以及前后端分离带来的收益,同时,美团点评前端技术专家,点评小程序及 M 站团队负责人马全华老师会为大家带来 Node.js 进阶课程,马老师会从 Node Web 的基础讲解、实践应用、性能优化、发展前景等多方面为大家讲解整个 Node.js 的生态。

现在扫描下方二维码进行报名,可享 8 折优惠,立省 960 元

更多深度培训课程详情,可点击阅读原文进行查看。

 
前端之巅 更多文章 你是JavaScript大师吗?试试这些面试题就知道了 我们与Kotlin的故事:从尝试到放弃 利用Nuxt.js创建服务端渲染的Vue.js应用程序 如果JavaScript成为第一个占领统治地位的编程语言,会怎样? 在IT技术圈混,怎么能不知道这几个公众号
猜您喜欢 2016大数据技术直通车免费公开课 谈谈分布式缓存设计(基础篇) Go语言并发模型:使用 context 讲一下Asp.net core MVC2.1 里面的 ApiControllerAttr 葡萄牙的战术