前后端分离开发模式初体验
作者:oldfish 来源:Alipay UED 发布时间:2009-06-24 11:44:00
前后端分离的开发模式,原本觉得没什么稀奇的玩艺,在最近参与的一个大型项目中,让我有了更深的理解。
前后端分离的开发模式:系统分析阶段,系分和前端开发人员约定好页面上所需的逻辑变量,进入功能开发阶段,前端开发人员进行前台页面结构,样式,行为层的代码编写,并根据约定好的变量,逻辑规则,完成不同情况展示不同的表现。而后端开发人员,只需要按照约定,赋予这些变量含义,并提供前后端交互所需要的数据即可。
以前自己在php上玩过mvc开发框架,但是没有在这么大型的项目中实践过,所以过程中暴露出一些问题,也说明现实和理想还是存在一定差距的。
对项目中遇见的问题做了如下纪录:
A.对交互白板的理解不足,如:对ajax实现大批量数据交互的实现,没有及时给出改进的建议
B.系分阶段产出的约定变的非常脆弱,开发过程中不时有新的东西和变更的东西出现,这就导致后面的前后端协作开发有些纠结
C.项目过程中,由于前期与需求方,设计师,系分的沟通力度不够,导致开发过程中发现很多考虑的不够周全的地方
D.项目开发过程中前后端开发资源的配比上较为悬殊,在后期频繁需求变更中,前端一直处于:勉强应付状态
可见,上面提到的这些,多是沟通和协作上的问题,以下是对这次初体验的小结,希望对前端开发工程师有所借鉴:
沟通:项目开发之前,尽可能主动的和系统分析师和交互设计师多沟通,确定页面中交互与服务器端交换数据的接口、方式、格式等,让前后端约定更丰满一些。因为她越丰满,后面的纠结就越少。
A.向前设计,参与到前期的交互设计的讨论中去,去理解设计,向后开发,去了解后端开发工程师关心的是什么,不想要关心的是什么,担心的是什么,学会站在对方的角度上去看问题
B.必须确认交互白板中各类出错场景以及出错提示文案是否完整,要求后台开发人员补充交互设计师无法知晓的后端异常出错的场景,并要求交互设计师给出相应的提示文案
C.明确交互效果中,哪些是需要通过ajax实现的,并与开发人员约定好数据接口,方式,格式等,并确认数据交互失败的情况下是否有文案提示,如无,主动找交互设计师补充该类场景的文案提示
协作:功能开发过程中,需要建立一个共同调试的环境,方便前后端同学协同开发。
A.有些数据接口api以及数据格式也许会到开发中才能够确认下来。可以有个接口文档。如果大家都知道彼此对业务规则都熟悉,可以在开发中逐个确认。无论如何,接口文档是必须的。它记录着在系统层面对业务的抽象。接口细节可以在开发中逐渐完善。
B.总有那么一些文件,是前后端开发人员都会修改的。这些敏感文件,修改前以及修改完毕都要知会后端开发人员。而且要养成edit前update的习惯。如果出现冲突,冲突最好能够一起解决,或者及时告知。避免再次冲突。
C,项目中前后端资源配比应该适当,1:10的资源配比想推起前后端分离的开发模式还是比较困难的,个人认为1:3是比较适中的配比。
出于前后端资源配比,系统分析阶段还不够详细等原因,在一些大型的项目中,对分离开发模式进行了一些调整,说实在的有些不得以,但是这应该是目前最符合现状的前后端分离的开发模式,抱着发展的眼光向前看,前端不断壮大之后,应该会有让人满意的答卷的!
在功能开发阶段,由于项目比较大,一般会分解功能,这样的话就很难提供出一个功能相对稳定的前后端共同调试环境,再加上资源配比太过悬殊,所以建议在功能开发还不稳定这个阶段,前端开发资源以协助开发的角色进入,由后端开发人员参照系分阶段约定好的数据类型和接口提供数据和嵌套页面逻辑,当功能开发相对稳定以后,前端开发人员对嵌套后的前台内容进行验收,此时,前后端开发的DEBUG工作就可以并行操作了。


猜你喜欢
- python中的多线程其实并不是真正的多线程,如果想要充分地使用多核CPU的资源,在python中大部分情况需要使用多进程。Python提供
- 模块介绍Python提供了importlib包作为标准库的一部分。目的就是提供Python中import语句的实现(以及__import__
- str.join即sequence – 要连接的元素序列。返回通过指定字符连接序列中元素后生成的新字符串。n =
- 最简单的数组合并我们只要使用array_merge即可array_merge()将两个或多个数组的单元合并起来,一个数组中的值附加在前一个数
- python是一种跨平台的计算机程序设计语言。python是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言,可以应用于科学计算
- Pycharm作为一款强力的Python IDE,在使用过程中感觉一直找不到全面完整的参考手册,因此决定对官网的Pycharm教程进行简要翻
- 从事API相关的工作很有挑战性,在高峰期保持系统的稳定及健壮性就是其中之一,这也是我们在Mailgun做很多压力测试的原因。这么久以来,我们
- Request Payload 和 Form Data 请求头上的参数差别在于:Content-TypeForm DataPost表单请求代
- 示例1我们将要请求五个不同的url:单线程import timeimport urllib2defget_responses(): &nbs
- 目录房价数据分析数据简单清洗各区均价分析全市二手房装修程度分析各区二手房数量所占比比例热门户型均价分析总结房价数据分析数据简单清洗data.
- 写在前面这篇文章主要让大家明白多线程爬虫,因为go语言实现并发是很容易的。这次的服务端,是我们之前搭建的电子商城平台,所以我们不担心ip被封
- 人生苦短,我用python。看到这句话的时候,感觉可能确实是很深得人心,不过每每想学学,就又止步,年纪大了,感觉学什么东西都很慢,很难,精神
- 我们知道,mysql是持久化存储,存放在磁盘里面,检索的话,会涉及到一定的IO,为了解决这个瓶颈,于是出现了缓存,比如现在用的最多的 mem
- Python里的多线程是假的多线程,不管有多少核,同一时间只能在一个核中进行操作!利用Python的多线程,只是利用CPU上下文切换的优势,
- 在pandas中怎么样实现类似mysql查找语句的功能:select * from table where column_name = so
- 在上一篇文章里已经写过如何安装python和在eclipse中配置python插件,这篇就不多说了,开始入门。1.先新建一个python工程
- 前言前一篇autoit实现文件上传打包成.exe可执行文件后,每次只能传固定的那个图片,我们实际测试时候希望传不同的图片。这样每次调用的时候
- 前言这篇文章抓哟讲解了关于如何实现在MySQL中创建带有特殊字符的数据库名称,这里的特殊字符包含:!@#$%^方法如下使用反引号`将数据库名
- 如何用OdbcRegTool组件来创建一个数据源?OdbcRegTool是一个免费组件,在服务器上安装后,就可以来创建一个数据源:<h
- ah!其实没有标题说的那么严重!不过下面可是我们开发产品初期的一些血淋淋的案例,更多的安全威胁可以看看北北同学的《python hack》P