[原创]基于VueJs的前后端分离框架搭建之完全攻略

(1)目前国内几乎搜索不到全面讲解如何搭建前后端分离框架的文章,讲前后端分离框架思想的就更少了,而笔者希望在本文中能够全面、详细地阐述我们团队在前后端分离的摸索中所得到的搭建思路、最佳实践以及架构思想;

 

(2)我们团队所搭建的前后端分离框架,并非只是将网上传播的知识碎片简单拼装,而是一开始就从全局出发,按照整个系统对前后端分离框架的最高期望进行设计,到目前为止,可以说我们的框架完全实现了对我们前后端分离的全部期望;

 

(3)我们在搭建过程中产生了一些创新(比如最大的创新就是API文档服务器的搭建),希望这些创新可以为您的团队在前后端分离的探索中提供一些有用的思路。

 

本文适合的读者对象:对软件系统架构有一定经验+对WEB前端/客户端软件开发有一定经验+对服务器端开发有一定经验。

 

注:本文中所提的“前端”主要指WEB前端,当然在很多情况下也适用于客户端软件,如桌面程序、APP等。

 

第一章   为什么要前后端分离

 

1、引用“为什么我不喜欢「前后端分离」(个人观点,欢迎来喷)”

首先大家可以阅读一下中文版原文:https://www.v2ex.com/t/298014?p=4,很有意思的一篇文章,作者文笔幽默,阅读起来很轻松。

 

文中有几个观点是笔者特别赞同的,比如:

(1)前后端不分离的团队,前端工程师都是页面仔话语权很弱,技术大牛都在后端,前端相当于给后端工程师打杂的;前端工程师晋升机会很少,薪资不高,发展前景渺茫;

(2)前后端分离后,更好招聘,团队耦合度更低,职责更分明。

 

但是文中也有一些观点是笔者不敢认同的。比如作者最终推荐【全栈工程师】,虽然笔者多年前就是一名全栈工程师,但我深知前后端分离的好处远大于全栈工程师带来的好处。原因有4,详见下一小节。

 

2、为什么我们团队要采用前后端分离

我们团队最终决定进行前后端分离改造的4个主要原因:

(1)全栈工程师很难招聘,很难培养,很多后端开发人员不愿意学前端技术,而很多前端开发人员学后端技术;

(2)如果前后端不分离,前端工程师的工作就必须依赖后端工程师,前端工程师变成打杂的,职业生涯前景惨淡;

(3)前后端分离后,前端和后端工程师独立开发,大大提高开发效率;

(4)综合来讲,前后端分离的用人成本远低于全栈工程师用人成本;同时,前后端分离的工作效率远大于耦合工作的工作效率;

 

然而我们团队也是从最近才开始全面实施前后端分离的,因为笔者深知,上面4个原因所描绘的美好愿景,其实际效果将会极大的取决于一个关键环节:API文档服务器。一个将就的API文档服务器会使前后端开发工作痛不欲生,团队矛盾日益尖锐,最终将会使程序质量下降,然后没有人愿意维护。

 

笔者在2018年3月终于完成一个近乎完美的API文档服务器的搭建方案,该方案完全实现了我对API文档服务器所期望的全部特性,然后花了一个周末开发完成。

 

在下一章中,笔者将会详细阐述API文档服务器的重要性以及分享我们团队自创的搭建方案。

 

第二章   前后端分离最困难、最关键的环节——API文档服务器 1、API文档服务器是什么?

请先看下图。

[原创]基于VueJs的前后端分离框架搭建之完全攻略

 

正如上图所示,前后端开发人员可以独立开发、独立运行、独立调试,他们之间的接口就是通过API文档服务器定义的。通常,一个页面的加载或者表单的提交,都有数据在客户端和服务器端之间传输,而API文档服务器就是专门用来生成API文档的。有了API文档,前端开发人员就可以基于API文档产生模拟数据(mock),然后使用mock的数据完成页面样式和页面交互;有了API文档,后端开发人员就可以基于API文档完成请求的处理以及返回响应数据。

 

而API文档服务器(通常为WEB服务器)是一个可以动态生成最新版本API文档的服务器,并支持本地维护+远程访问。

 

(如果你们的项目还在使用静态的API文档,比如word文档,那你们必定经历着巨大的痛苦)

 

2、为什么API文档服务器是最困难、最关键的环节?

为什么本文会专门写这样一个章节来表述API文档服务器的重要性呢?因为笔者认为,很多团队在前后端分离的探索中举步维艰,可能最重要的原因就是对API文档的搭建方案重视不够(因为现成的方案俯拾皆是,如word文档做API载体)。因此,笔者希望大家看清楚前后端分离过程中最重要的一个环节,不是原型,不是设计,不是开发,也不是测试,而是API文档的编写/维护/发布/阅读。

 

然后让我们来回想一下软件开发流程中的几个关键环节:

(1)产品经理提需求,画原型;

(2)UI设计师根据原型出设计图;

(3)测试团队根据产品原型编写测试用例,制定测试计划;

(4)架构师根据原型编写API文档;

(5)前后端工程师基于API文档完成业务开发;

(6)测试、改BUG、发布。

 

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpyjsj.html