随着移动时代的到来,前端面临的挑战越来越大。从产品角度来看,前端朝着多终端的方向发展,需要考虑 PC、Pad、Phone、TV 等各种用户终端的交互实现。未来的产品形态,需要高性能跨终端的面向消费者的应用,也需要传统 PC 端面向企业的富应用。向上是移动开发,向下是企业应用,这两个方向都非常重要,对前端的挑战则各有不同。
从技术角度来看,前端不再局限于浏览器端的 Web 技术。随着 Node.js 技术的兴起,前端开发开始渗透到服务器端,将服务器端的 View、Controller 等层接管过来,成为全栈(Full-stack) 开发。在全栈的模式下,前后端的分工协作更加合理高效。全栈之路究竟如何走,目前无论国内国外,都处于起步阶段,充满诱惑与陷阱。
本届QCon 北京2014 ,InfoQ 特别邀请到支付宝前端技术部负责人王保平(玉伯)来打造“移动时代的前端”专题,关注跨终端、全栈开发以及前端工程化。
玉伯是淘宝前端类库 KISSY 的创始人,也是前端模块加载器 Sea.js 的创始人。他在前端基础技术、网站性能优化、企业应用开发等方面非常活跃,并且还是一名非常热心的前端布道者。在 Velocity、QCon、D2、NodeParty 等会议上积极参与。玉伯在微信上开通 WTP 公众帐号(微信号 wtp-notes),畅谈技术、产品与自由梦。
以下是采访内容。
InfoQ:大家都知道您是您作为支付宝前端开发团队负责人,淘宝前端类库 KISSY、前端模块化开发框架 SeaJS、前端基础类库 Arale 的创始人,不过还是请您重新介绍一下自己,及这三个项目现在的情况吧。
玉伯:我的情况比较简单,03 年毕业,在北京漂了 5 年,08 年到杭州加入淘宝,12 年转岗到支付宝,现在负责支付宝共享平台的前端技术团队。
在淘宝期间,业务需求需要做一个富文本编辑器,于是有了 KISSY Editor,后来做着做着就变成了一个前端基础类库 KISSY,editor 是其中一个组件。11 年开始,KISSY 的主要开发工作已移交给同事承玉。现在已经有一个专门的虚拟团队维护,负责人是拔赤。
2010 年期间,有关注 Node.js 和 CommonJS 社区,了解到当时的风云变幻。强烈觉得模块化开发理念不仅需要规范化、更需要扎扎实实的实现,当时有 FlyScript、BravorJS、RequireJS 等种种实现。个人不是很喜欢 RequireJS 的一些理念和实现,喜欢的 FlyScript 则自我阉割了,因此萌生了自己写一个的想法,这就是 Sea.js。Sea.js 已经发展到 2.x 版本,在国内使用比较广泛,阿里、腾讯、中航信等公司都有采用。Sea.js 的核心理念是保持简单,只做该做的。目前 Sea.js 3.0 的规划已经有了雏形,会进一步简单,包括构建。
2012 年到支付宝后,支付宝已经有了一套前端基础类库 Arale 1.1,因此我并不是 Arale 的创始人。Arale 1.1 的思路与 KISSY、YUI 等类库差不多,都是从底层组件做起,很辛苦很累,但效果并不太好,在可维护性、易用性等方面,自己做的 dom、event 等组件,经常不如业界已经成熟的 jQuery 等类库好用。为了解决这些痛点,当时和同事商量后,就有了 Arale 2 的想法。Arale 2 的核心是开放。开放的第一层是拿来主义,业界已经有的成熟方案,经过我们考察后,直接引入进来用。拿来主义直接让我们站在了巨人的肩膀上,并能以此做为基础,迅速构建适合支付宝的一套 UI 组件库。从狭义上讲,Arale 是为支付宝量身定做的,并不适合直接拿去给其他公司用。从广义上讲,Arale 是构建前端基础类库的一种开放式方案,这种方案可以被其他公司借鉴。目前已有不少团队基于 Arale 方案构建出了适合自己公司业务的特定类库。Arale 目前的规划有两个方向:1)进一步拥抱社区,废弃 CMD,拥抱 CommonJS,Arale 组件的模块将直接与一个 Node 模块无异。2)基础组件的 Mobile First 化,为移动基础类库的构建提供体系化方案和最佳实践。
对前端开发来说,前端基础类库很重要,但从整个前端领域来看,类库依旧是比较小的一块。还有很多领域非常值得投入,下面有时间再说说。
InfoQ:阿里内部团队众多,能否讲讲支付宝前端团队的开发流程和特别之处?
玉伯:从前端开发来看,阿里内部分三种类型:淘系、支付宝系、B2B 系。B2B 系没亲身体验过,略过不说。淘系和支系的区别比较明显,简单说下。
淘系的核心业务是「导购」,业务的定位使得淘系大量前端业务以前台展现为主。这类业务,快是第一用户体验。快不仅是页面速度快,也包括研发交付速度要快。也会有功能交互很复杂的业务,但相对来说不是很多。
支系的核心业务是「支付」,有段时间也有「导支」业务,但很快成为非主流。「支付」是功能型的,与用户资金相关,「稳定」、「安全」是第一用户体验。当然也求快,但在稳定、安全面前,快经常要让道。支系还有两个重点是金融与数据,与支付一样偏功能性。
业务类型的不同,使得淘系、支系的技术体系、研发交付有比较大的差异性。淘宝求快,支付宝求稳。目前支付宝也在探索更适合互联网的快速轻量级研发模式,淘宝在稳定、安全上的要求也越来越高。像是两个极端,在互相借鉴互相靠拢,差异性应该会长期存在,但会逐步减少。
InfoQ:目前您最关注的重点是什么?
玉伯:目前最关注的是团队管理。从带几个人,到突然带几十人,压力很大。除了自己的个人生活,最在乎的就是这帮兄弟姐妹的未来。目前团队缺口还很大,近期大量招聘中,职位不限于前端开发,也希望有 Node、Java、iOS、Android、交互、视觉等经验的人员加入。
你瞧,又广告了。最近晚上做梦都在关注招聘,有个同事说我近期三句不离招聘,欢迎投递简历。
InfoQ:您感觉在过去一年中,前端领域是否发生了令人值得注意的变化?
玉伯:变化太快了,好多变化。百度的 berg 总结过一篇 2013 前端技术盘点,说得很全面。对支付宝来说,最大的变化有:
- 全端化。前端不再是折腾各种浏览器了,而是需要面对 PC、Pad、Phone 甚至 TV 等各种端。支付宝的做法很干脆实在,直接让一批前端开发转岗到无线部门做 iOS 开发。前端部门自身也需要逐步具备跨终端开发的技能。这是移动互联网带给前端最大的冲击,却也是最好的礼物。
- 全栈化。Node 的兴起和成熟,让前端在解决研发效率等问题上有了新思路。阿里的整个技术体系是基于 Java 的,前后端的职责分工一直存在灰色地带,特别是在支付宝,厚重的开发环境已经对前端研发效率带来严重影响。在这种情况下,如果能基于 Node 实现前后端运行与研发过程中的清晰分离,将会带来研发效率上的大提升。全栈不是为了技术的全面,而是从职责分工上能让更合适的人干更合适的事。
- 工程化。前端开发越来越复杂,除了运行时的类库框架,还有非常非常重要的一块是研发交付体系。这一块各个大公司的前端都在探索,各个公司都有大量实践,但感觉都还存在很多优化甚至突破的空间。支付宝的研发交付体系好像是阿里最复杂的,前端一方面「享受」这种复杂性带来的稳定性保障,同时又非常「痛恨」如此让人抓狂的各种平台、流程。前端的工程化开发是一个体系化的问题,相信 2014 年,支付宝前端在这一块会有飞跃式突破。
InfoQ:您是此次“移动时代的前端”专题联合出品人,能否谈谈你对此次专题的内容策划?
玉伯:内容策划上,就是上面说的全端化、全栈化、工程化。筛选的话题,会来自大公司,也会来自创业公司。全端化是移动互联网对企业的需求。全栈化、工程化都是对研发效率的关注,这一块的进展,能让互联网公司特别是大公司的传统研发模式发生变革,让分工更合理,研发效率更高。
InfoQ:您对“全端开发”这个新概念怎么看?
玉伯:上面已经提到这些概念了。全端我的理解是跨终端,从浏览器兼容,走向各种终端的兼容。你想谈的应该不是这个,而是 FSD(Full-Stack Developer)。
Full-stack 有些地方翻译成全端,我更喜欢翻译成全栈。知乎上有过讨论,感觉大家对全栈的理解有很多差异点。我的理解与大家的有些不一样。
- 全栈不是什么都懂,而是鼓励大家从单一( | 型)人才变成一专多能(T 型)人才,进而变成多专多能( π 型)人才。
- 对于前端的全栈之路,在支付宝是鼓励大家通过 Node 掌握服务端上的 UI Layer 层开发,是让前后端的分工更合理,并非是让前端去研究后端的专业领域。表面上看是分久必合、合久必分,实际上是分工更合理,让前后端都能朝着更专业的深度发展。
- 全栈开发应该根据不同场景去定义。支付宝的全栈,跟 Facebook 的,目前就不一样。中间没有谁好谁坏,都是从业务实际需求出发,以及团队目前的人员情况出发,自然而然地一种选择。
InfoQ:在前端开发以外,您是否还有关注的技术领域?为什么?
玉伯:技术领域这几年都放在前端了,对动漫制作、数据挖掘有浓厚兴趣,但尚未投入大量时间。技术领域之外,最关注团队管理,越来越发现很多事情靠一个人无法达成,个人英雄主义时代已经很遥远。在当下,要达成一些心中想做的事,要倚靠团队的力量。自己的定位依旧是技术专家,但同时希望自己能具备 leadship,这样才能达成自己心中的梦想。
此专题详细信息,请见专题页面。关于此次 QCon 北京其他专题的详细信息,请移步至大会官网。
需要特别注明的是,每年 QCon 大会门票都会在开幕前售罄,及早预定可提前确保席位,并享受更低折扣。现在报名参加将可享受 8 折优惠。团体购票(5 人及以上)将享有更多优惠。详请咨询 qcon【at】cn.infoq.com,或直接致电 010-64738142。报名请点击报名页面。
评论