Felix DingAn old-school Web designer who loves alternative rock, classical guitar, reading and writing.
也谈“前后端分离开发模式”
2009-08-22 05:05:47
/ Front-End Programming
/ 4 comments
读了老鱼的《前后端分离开发模式初体验》,暂时没有和他见面详聊的机会,所以就把读后感和想法写在这里。
08年春天我离开支付宝之前,曾和资金线的同事(主要是夏天)讨论过这种做法,即把view的部分完全交给前端开发,java程序员只需给出逻辑、接口、变量和数据。双方以接口文档为工作基础,用统一的开发平台(Eclipse+SVN)来协调工作。另一方面,前端开发则不断地将Velocity/HTML封装成一个个的helpers,从而提高代码的可重用性,并以此降低编码难度(关于封装helpers这点,我曾在一次技术分享中谈过,不知老鱼是否还有印象)。我给这套方案起的名字是“开往中国的慢船”,在《为什么网页设计不应强调分工 2》一文中,我简要的介绍过。
从支付宝的情况来看,这种做法有比较大的可行性,既可以提高开发效率,又能把双方的工作边界定义的比较清楚。不过我当时即将离职,也就没有推动下去。这次看到老鱼的项目实践,很高兴。对于他说的那4点问题,我觉得:
- 不知道这个白板究竟“白”到了什么程度?做html的时候运行调试ajax了吗?有没有和开发约定好往返的数据内容及格式?
- 这个问题确实比较头疼,因为系分阶段根本不可能细化到变量名都定下来的程度。可能的解决办法有三个:一是考虑周全所有的流程分支,不能遗漏;二是管后台程序员要需要的数据,而不是被他的数据追着跑。比如这篇Creating Reusable Elements with requestAction所介绍的方法,就是让view在程序中占有了一个比较重要的位置(有点像web service);三是逐渐把复杂的逻辑从view中提出来,返回到后台去,简言之让view变得更单纯一些。我觉得如果有必要的话,甚至可以引入“数据源”(datasource)的概念,把数据统一交到数据源中去处理,然后再让数据源和view交互。可以参考SproutCore的做法。
- 问题C和D基本上基本上可以靠沟通和协调解决。另外对于问题D,或许前端开发可以考虑转到Eclipse上来。
简言之,“开往中国的慢船”这套方案的核心之一,就是把view让前端开发来创建和管理,在项目的前期及中期,前端开发就已经利用test fixtures创建出可以正常运行、几近真实、但又只包含view的应用程序来。
注:“开往中国的慢船”来自于村上春树的同名作品。我发起的项目或技术方案都以村上的作品作为代号,个人习惯。
Comments
Leave a comment
© 2000-2012 dingyu.me (formerly known as heartstringz.net), all rights reserved. Don't click me.
技术上我不太懂的,不过看了一下LZ说的,我感觉,是不是可以用游戏开发公司的“引擎+level design”来类比?
比如我们玩idsoftware的游戏,引擎是卡马克写的,但是前段的图形呈现,游戏内容,关卡设计,他是通通不管的,全部是其他家伙去写。
换言之,是说技术给了一个巨大的百宝箱,然后前端的人拣起所需要的东西进行搭建。
@Rabelais 对,可以这样理解。一言以蔽之,就是我反复提到的规范和框架。
[emoticon:mdr]
没错,这个分离模式已经在不断落实,现在的瓶颈就是B这里。
B的第一点,基本上90%不错了。第二点,这需要一段时间的彼此磨合,慢慢形成标准,先有规则然后不断完善了。
第三点,这个目前不靠谱,跟开发者的能力有很大关系。
要实现你的梦想,丁宇,我们得多点人才行,哈哈。至少前后端比例正常点。
[emoticon:eye_up] 正打算搞这个