CSDN年度技术盛宴 “SDCC 2015中国软件开发者嘉年华” 将于2015年11月19-21日在北京召开。CSDN软件研发频道将采访一些与会讲师,谈谈他们将在会上分享的内容。
本期我们采访的讲师是吕伟,他目前担任美团技术终端组高级工程师,是Node开发和前端工程化方面的资深开发者,并活跃于开源社区。他将在 SDCC 2015大会前端开发专题论坛 上发表题为《前端分布式编译系统的设计》的演讲。
【温馨提示】距离大会开幕还有不到3天的时间,目前余票已不多,想要参会的请抓紧购票, 大神都来了,你还在等什么?
美团技术终端组高级工程师 吕伟
CSDN:首先,请介绍一下自己和公司的前端研发团队。
吕伟: 我隶属于美团工程技术部的基础终端组,这个团队刚成立还不到一年的时间,成员大概有40人了。我们不是传统的Web前端工程师,率先将前端方向直接面向终端(Web端与客户端)与全栈领域。
因此,我们决定在“技术工程部”中成立了这样一支团队,为了表示他与传统前端的不同,我们起了这样一个名字——基础“终端”团队。
我们团队主要的职责是善整体研发生产力,研发高质量及领先的工程工具,框架、平台等不同方式降低整体终端与全栈“协作”研发成本。
我们团队承担了如美团云计算、美团云盘、支付金融等技术工程部的终端业务,也自有开发了如美团云盘、美团考试、美团图书馆等业务。
CSDN:美团网站的前端架构是怎样的?
吕伟: 这里我只能简单谈谈我所看到的和一些参与过的项目,毕竟美团现在发展速度实在太快,感觉每天都会有新项目出现。不得不说美团相比我的上家百度在架构和技术选型上更加激进,这也是我决定来美团的一个重要原因,当然我并不是说保守就不好,我们面对很多原则问题还是会选择保守,但是我们会尽量抓住机会尝试,去思考。
大家更乐意尝试新的技术,甚至是一些并不完全成熟的技术,比如由我负责,在上季度投入了秋季校招的美团考试,这个项目的前端就全部采用了Webpack CommonJS + React + Flux 模式进行开发,前后端采取完全分离的方式开发,数据完全由后端API提供,没有后端模版,页面和数据完全由浏览器渲染。自动化调试,编译增量上线,CDN化等使用的我自主开发的自动化库nokit系列。
当然我们也有很多项目使用后端模版渲染页面,比如外卖和支付相关的很多项目采用了 FreeMarker和成熟的jQuery(zepto)生态进行开发。
CSDN:能否简单解释一下前端工程化?它的核心理念是什么?
吕伟: 工程化一词并不新颖,只是借用了传统实体工业的概念而已。首先要问为什么要工程化,动机是什么,我们就能很自然的推理出工程化是什么。
现今互联网的飞速发展已快到很多时候我们都难以预计和控制,问题很可能会迅速增长得多到难以解决,重复的问题也越来越频繁出现。这些都是一个人开始思考要工程化的典型动机。
于是我们开始抽象反复碰到的问题,归纳问题的特征,拆解问题,量化问题,让看似繁杂琐碎的业务回归到最朴质的数学。比如你平时用到的不起眼的for循环,这其实就是工程化的典型缩影,我们将一个大的业务抽象成只需要反复解决另一个简单的子业务就能解决的问题,这不就是循环么。这里的子就是工业化的产物,换个说法就是“标准”或“协议”,这就是工程化的核心理念。
比如 Webpack 的盛行就是一个工程化例子,很多人问Gulp+Browserify也很好啊,为啥要选择Webpack?Gulp+Browserify在执行工程化的时候少了对“标准”或“协议”的固化, 而Webpack定制了整条流水线的执行细则,它将人们反复出现的问题都抽象到了自己的核心中,比如你需要watch和高性能缓存编译时,Gulp给你的是选择各种三方库的自由,而 Webpack给你的是一套默认的标准。从工程化早期看,Gulp这种能覆盖多变的需求,但一旦工程化进入中期,需求已经有明显边界时,Webpack这种思维就会盛行。
CSDN:美团在前端工程化上做了哪些事情?
吕伟: 比如我上季度自动化脚手架系统,高度抽象了规范检测,编译,代理调试,假数据生成,单元测试等过程。再比如全端通用的统计SDK,再如我正在开发的API联调系统。
CSDN:以美团的经验,现在阻碍前端工程化进展的因素有哪些?
吕伟: 比如很多老的项目由于很多历史包袱,你很难从项目中抽象出可工程化的原子,这种项目往往工程化的代价非常大。比如上个季度我专门花了大量时间为云计算设计了自动重构程序,而且得一边跟进快速迭代的项目本身,一边修正重构程序,这个反复的过程是非常痛苦的。再比如外卖的一些老项目重度使用了后端 FreeMarker 模版,他们希望能前后端项目分离开发,达到前段开发时无需部署繁重的 Java 环境,怎样让老的项目不改一行代码,或者自动改代码来展开工程化是个长期困扰我们的问题。
CSDN:前端分布式编译系统是在什么情况下开发的?该系统主要解决什么样的问题?
吕伟: 动机源自于美团考试系统,当时它只开发了半年,前端源文件就膨胀到了500之多,一次编译可能长达几分钟。虽然这时间看上去并没有长到成为整个项目的开发瓶颈,但跟随这几年前端的发展来看,开发者对编译需求将日益增强,尤其是模块化的盛行,编译性能的问题很可能会成为大家日益关注的一个问题。于是这个实验性项目就诞生了,它要解决的问题跟一般分布式编译要解决的问题大体相同,缩短编译所需时间。
CSDN:您平时活跃在开源社区,都参与了哪些开源工作?
吕伟: 主要活跃于 Github,为很多知名的开源项目贡献过代码,比如 Socket.io、Express.js、CoffeeScript 等,自己也在持续维护一些开源项目。
CSDN:SDCC 2015上您分享的主题是什么?选择该主题的原因是什么?
吕伟: 主题是“前端分布式编译系统的设计”。这个主题实际上是在用后端常用的一些想法和算法解决前端可能会碰到的问题,是一个典型的跨界解决问题的案例,我希望通过分享我在实践过程中碰到的问题和产生的思考激发大家对熟悉问题的反思。
CSDN:您最期待在本次SDCC 2015上听到哪些内容?
吕伟: 最近一直在学习和使用 Elixir,深受其打动,看到本届嘉宾里竟然有 Elixir 的设计者 José Valim,非常期待他能分享下设计 Elixir 时的心得以及他是如何看待 Elixir 的未来的。
2015年11月19日至21日,由CSDN重磅打造的“2015 软件开发者大会”(简称:SDCC 2015)在北京朗丽兹西山花园酒店隆重召开。 九大技术专场论坛包括:架构实践论坛、前端开发论坛、数据库实战论坛、研发管理论坛、安全技术论坛、算法实战论坛、编程语言论坛、产品与设计论坛、微信开发论坛。五场特色活动有:老友记、创业者说(DEMO秀)、程序人生、讲师夜话、养生堂。