参加第十届D2前端技术论坛,你有什么收获?

2015年12月19日在杭州阿里巴巴举办 第10届D2前端技术论坛 2016年:参加第11届D2前端技术论坛,你有什么收获? - 前端工程师 - 知乎
关注者
1,442
被浏览
25,495

50 个回答

我没有像民工叔那样现场速记的能力,不过乘着记忆还热乎,写一下。


本次D2共0x10场分享。

其中移动hybrid/native解决方案相关的分享有4场,分别来自百度、淘宝、手淘团队的工程师和GeekZooStudio的老郭。

组件和应用框架相关的分享(不包括react native)有3场,分别来自腾讯、蚂蚁金服、碉堡了(strikingly)的工程师。

node.js架构相关分享有4场,分别来自天猫、360、阿里云、腾讯的工程师。

特定平台主题分享有2场,分别来自阿里数娱、阿里智能云的工程师。

其他API管理、可视化、国际化各1场。

主题的分布还是很有代表性的。当然因为主题如此丰富,所以又是同时有三个会场,我想很多人都会有选择困难。后来跟圆心聊了下,主要是现在前端议题多,又不想分两天(增加参会者出行负担),又不想每年两次或者收费(主办方控制成本),所以还是选择了现在的方式。至于说为什么分会场不是按主题(比如node.js主题、hybrid/native主题等)分,圆心说是故意的,但没有细说原因。


因为我本人的工作并不侧重hybrid/native方向,所以优先选择了其他主题,包括死马、朴灵的两场node.js的相关分享,杨文坚的组件化设计的分享,听鸿的TV平台的分享,黄高岚的react的分享。


先说死马的。

天猫从php切换到node的架构层面改造我以前就听过一些分享,这次只是增加了一些运维层面的细节。还有关键的一点,就是通过天猫的真实数据说明新架构相对于老的php架构的巨大优势。(死马虽然在QA环节说部分提升来自于重构而不是php=>nodejs,但我认为那只是说说而已,继续使用php却要抛弃php的传统模型是非常困难的。)

不过我对于死马讲的koa的一些优点并不完全认同。我个人认为koa是比express在api设计和middleware开发上更方便一些,但大部分benifit是相对次要和只惠及框架developers而不是框架使用者的。因此其他框架比如thinkjs也还是有机会跟koa去竞争的,呵呵。BTW,

@李成银

作为thinkjs的主要作者在D2上也有一场分享,其实主办方应该让成银跟死马pk一下。

当然这个部分不是重点。重点是nodejs大法好。


然后说一下朴灵的。

简单说就是alinode的广告。然而我狠happy能看到这广告。因为虽然我从2010年开始就是node.js的坚定支持者,但在实际生产环境中一直只将node.js用于工具链,而很少将node.js用于主要的服务。最大的原因就是缺乏node.js运维的信心。而朴灵的广告可以说给我提升了狠大的信心。希望朴灵团队早日进入node.js的core contributor和node基金会!


下面说下腾讯杨文坚的组件相关的分享。这是又一个借鉴WebComponents规范的尝试。作为一个对React体系持保留态度的人,我个人其实一直期待这个方向能看到更多的可能。不过遗憾的是文坚的尝试并没有能让我惊喜的部分,简单说,就是把容易做的事情都做了(做得可能还是不错的——特别是已经用于生产环境),但是困难的部分都没有做。

当然这有一个难题。用于生产环境固然好,但也因此,特定工程上的需求就获得了更高的优先级。我不是说来自于实践的工程需求不重要,可是,组件化是非常复杂的架构问题,要优先考虑特定的工程需求,最简单的办法就是牺牲掉一些在特定工程中相对不重要的特性。然而要判断某种特性裁剪是临时性的措施还是永久性的架构约束,是非常困难的。


延伸开来说,在这一点上,各种hybrid/native方案也是如此。虽然我没有听这次所有的hybrid/native解决方案的相关分享,但是总体上我对所有目前类RN的方案有一个判断。它们其实本质上是重造浏览器渲染引擎。js是不动的,html/dom被裁剪,css被裁剪。其中尤以CSS为改造重点。像表单交互、动画、无障碍性等也是被牺牲的,但是这些部分是临时性的,像react生态里,这些问题已经得到解决或缓解。唯有对CSS的改造是本质性的改变。

CSS大体可分为三个方面:

1. selector和cascade机制

2. 布局模型

3. 其他特性(比如css单位、transition/animation、透明通道、渐变、filter、svg等)

如React官方的CSS in JS方案,是完全干掉了1。React Native进一步裁剪了2和3。


说到底,现今浏览器的复杂性,80%来自于CSS。像html parser、dom接口、各种device api这类,麻烦管麻烦,但是都是可以模块化,可以做到解耦和正交,因而实现和维护并不算特别难。但CSS部分就不是。尽管CSS规范也是模块化的,互相之间是正交的,但是那是从使用者(web开发者)的角度正交,而不是从实现者的角度。对于实现者来说,CSS特性错综复杂,互相影响。渲染引擎的许多优化,实际上很多是很dirty的。这导致渲染引擎(相对于native来说)又慢bug又多。


可是简化CSS就是solution吗?我对此其实一直有所保留。所有强调工程实践需求的,可以试想,回到CSS1的时代,我们也可以解决80%的页面样式需求的嘛,但是我们难道会满足于CSS1吗?所以问题是,各种类RN的方案如果一直停留在今天的样式相关特性集,我们是否真的能满足于此?如果它们也不断扩充特性集,我们怎么有信心说CSS发展中踩过的坑它们就会避免?

我个人倾向于,样式相关的复杂度是所谓本质复杂度,也就是长远看无法完全避免的。这是为什么我对RN或类似方案给出的评价一律都是:(目前来看)工程上是可行的。但是长远来说,它们是不是答案,我存疑。


回到文坚在组件化方面的尝试,虽然说借鉴了WebComponents规范,但实际上的实现却如React一样是牺牲了CSS的selector和cascade机制(当然如果在现有技术上很容易做到,那也不需要新标准了)。而保持原有DOM/CSS架构正是WebComponents相对于其他组件化方案的核心优势(至少对喜欢WebComponents的人来说是这样)。所以这大概也只能评价为一种尝试。

另一方面,文坚可能花了不少精力在打包优化上面。从工程实践的角度来说,这一点是非常重要的。然而从未来组件方案的角度来说,现在条件下所做的优化都是不重要的。原因我在晚场的分享和交流里讲了,我认为整个前端构建/部署即将发生重大的变革。组件的构建、打包自然不会例外。


整个下午我一直在白马山庄听分享,前面提过的朴灵的分享是第一场,第二场是阿里数娱的听鸿的「TV前端开发解决方案」。这一场听的人比较少,这也可以理解,这毕竟不是热点。不过对我个人来说,这场我是很有共鸣的。因为他讲的正是我2006年期间在盛大工作时参与盛大盒子项目时研究过的领域。作为一个TV Web框架的先驱(烈),我很高兴看到后继有人。当然也有一点伤心,因为当年盛大盒子推出的时候,Apple TV第一代还没有推出;今天Apple TV已经是行业标杆,而我以及当年近百人的工程师团队所有的努力却早已灰飞烟灭,没有留下一点痕迹……如果那时盛大更牛逼一点,并且没有广电总局这样恶心的机构,说不定今天听鸿参考的就不是Apple TV的文档而是我写的文档了,呜呜……最后补充一点,问答环节hehe123建议结合无障碍领域是非常到位的,当年我在写交互Guideline的时候其实也参考了许多W3C WAI的文档。


白马山庄的最后一场是碉堡了的黄高岚的分享。整个presentation准备充分、条理清楚,代码演示很顺畅,还有彩蛋。在听了一整天之后,以这样一场轻松但又扎实的分享结尾,让人一点也不会有疲倦之感。其实之前碉堡了的CTO郭达峰就给我提起过他们有位员工技术出色,但因行动不便所以很少出来参加技术活动。没想到那么快就能看到本人。希望以后能看到黄老师的更多分享。


流水帐报告完毕。至于晚场我在台上即兴讲的内容,以后再整理成文,这里就不赘述了。(更新:已经在另一个问题下写了:

如何评价阮一峰关于前端工具变化快的言论? - 贺师俊的回答

实时手机记录,随时更新:

第一场听了百度的blend ui

css3切换动画没有办法跟手,做手势相关操作

多个webview切换,产生的问题是原先在一个页面作用域中的代码被分散到多个,业务代码麻烦很多,通讯是个问题,内存泄露等方面也有不少困扰。

最终方案:webview上面盖native,比较固定或者高性能的部分用native,动态内容用web,一起拼装。

问题是,比如滚动,native和webview不能同步,考虑限制native部分为fixed,对业务有较大限制。

最后,用webview只做js执行引擎,然后结果扔给native渲染。。。

为什么不用rn:国内很多用户安卓手机不支持,编译的js core通过jni调用,有些大。

实现原理,用js封装web和native组件,外加bridge通信。

创建一个ui,js到native,使用树形组件树,从顶层往下逐步创建。

两边通过id建立组件映射,相关资源也是通过id做索引。除了view tree,还有css node,每个css node创建之后对应一个view,布局跟web相比是简化的,比如不需要float之类,主要支持flexbox之类。

原理是,从视图组件树创建对应的css node树,渲染的时候,css node树计算出布局信息,然后设置回来到视图组件树。

性能优化:创建组件不反射,而是固定,加switch case,java写组件的时候添加注解,从这个注解构建出这段创建代码。

web和native的组件层级对应,但是web中会有辅助布局的容器,所以这里在native渲染时候做一些合并,减少组件层级。

此外,还移植了一些dom api和css选择器之类的。


第二场,腾讯的人讲组件化

幻灯片字体不适合阅读。

Ques为什么不用开源方案,当然理由也是中国现状啦,这次是跟网络有关,还有浏览器。

MVVM,gzip之前10多k,兼容ie6到移动端各种浏览器。

内部实现,组件使用特定class标记内部结构,应该是用来做类似transclude之类的功能。

Ques的组件可以继承,为什么说可以继承就有aop的感觉???

然后演示怎么组合各组件。。。

好吧,没有继续听了。


下午第一场,听承玉讲react组件方案

最近一两年前端发展快,需要重构组件,并且兼顾非专业前端。

对比了spm,npm的优缺点

评价了browsify和webpack

综合提出了一套整体方案。

底层有基础模块的管理,未来模块的合并不一定是现在cdn combo这种方式,有更多考虑。

组件库antd基于react,加上蚂蚁金服的设计语言ant design,使用es2015编写,发布时候构建成es5。

还包含了名为g2的图形库。

另外做了一套名为roof的组件通讯方案,对比了flux和redux的缺点和推广难度,提出了一些解决办法。

这里讲太快,不太好记录了。

在数据通信层,对比了relay和falcor,用一个oceanbase的监控界面举例,说明优化之后的性能提升,主要是通讯数据的合并。

未来的探索,typescript,ant-mobile,relay。

提问:会考虑vue吗?这个。。。只能说偏好了。

另外个提问:为什么是基于react而不是基于web components?承玉觉得标准不一定好用。这个我赞同。

下一个,手机qq空间的分享,主要讲的是一些离线策略,预更新策略之类,工程方面的事情讲得挺好的,配图典型腾讯风格。。。

再下一场听的是国际化美杜莎平台,三年前我其实也在考虑这个事,大致思路是差不多的,除了考虑多语言集中管理,命名空间分隔,还有构建阶段的控制,另外还要做那些脱离研发过程的文案替换,让运营或者业务人员自行修改文案,嗯


我就记录了这么多,剩下的场需要看其他朋友的记录了,或者看录像和相关资料补上。

今年是第十届d2,主题是融合,确实,今年的主要话题有三块,一块仍然是新框架和前端方案的探索,一块是node相关的深入应用,一块是最贴近主题的融合,也就是多端合一的技术方案。

下面是我的流水账,仅供娱乐,道德感极强的建议pass:

去年鼓动公司的同事们来参加过D2,反响很好,处于封闭环境中的人应当走出来看看外面世界是怎样的,前端是需要交流,需要活力,需要跟随社区脚步的,因为发展很快。

今年照例是鼓动大家报名,我团队的人基本都是今年新入职或者转岗,所以也都是第一次来。据说,今年报名的时候,大家填的理由都是:五花肉的前男友……感觉有几百个人填的这样的理由。

因为周五还要来参加别的活动,所以就调休了,早上直接来杭州,本来订的8点44的高铁,人生中第一次错过了,然后就是改签,到了杭州东站之后直接打车到阿里,12点准时到的,一路畅通。

中午跟着庄少和小雪在食堂感受了一下,分量太足,远超我的正常食量,口味也不错,有些咸,不纠结了,很少能碰到刚好适应我那种完全淡而无味口味的地方。

下午去8号楼参加weex conf,勾股的心血,他跟一群人一起努力了好久的成果,能坚持下来真不容易,能被邀请作为嘉宾,压力好大,因为自己其实不太搞移动端开发,只能纯粹作为朋友角度来支持……

晚上去印象城吃饭,winter请客,重口味,各种三文鱼,海胆之类东西,我吃了一些熟的东西,刚好也不饿。。。

周六早上,跟百度的两个人一起打车去阿里,到得不算早,刚好9点,下车发现团队的小伙伴们正好也刚到,然后就四处找认识的人聊了聊。

早上开始之前,找到了

@Jim Liu

,之前从未见过,很厉害的。后来中场休息又见到了三水清,这个也是第一次见,都是百度的。

今年有三个场,很多主题都不太好取舍,只能尽可能找自己更感兴趣或者刚好想要了解的东西去听了。按照惯例,我实时记笔记,不过,被

@yuanyuanVivian

发现了,她开始发挥战斗力,狂记录了一大堆……兔八哥

@TooBug

也记录了一些。

嗷嗷和五花肉的主持风格简直太搭,都是狠命黑,抽奖过程也是各种搞怪。

在听分享的同时,大家在微信群里也一直在讨论得很热烈,顺带还有各种黑。我今天又黑了不少人,哎呀。。。

中午又用餐券体验了一下食堂,就三个菜的标准套餐,难得我这么挑食的人每种都喜欢吃,想起夏天时候在CSSconf,四个菜有三个不吃的,真是。。。我算是理解了,为什么好多来了阿里的,体型都发生了翻天覆地的变化了……

下午在alinode的摊位见到了

@张秋怡

,打了个招呼,实力非常厉害的女生,现在在朴灵团队,感觉在这个团队比在业务团队更适合发挥。

晚上跟

@朴灵

夫妇,张秋怡,圆心,贺老,袁源,刘骥还有图灵的两位朋友一起吃了饭,然后去参加夜场,跟

@天猪(刘勇)

@大漠

几个人聊了好久,坐在地上的背影被偷拍了,那张照片的名字叫做:落寞的老男人们,年轻的吉姆同学不幸被误伤在内……。

后来又组团去吃火锅,不知怎么就变成了红包大战,微信群和支付宝两边乱扔红包,大家的手机电池基本都挂了,充电宝基本也全部阵亡,只好把电脑打开充电,

@元彦

的手机也插过来充了一会。

元彦自我介绍的时候被我补刀了一把:从腾讯跳到阿里,结果造成两家公司的平均颜值都上升了,咳。。。

快12点了才散场,照例,每次前端领域的大会都会发展成为见面会,也照例要补上一篇流水账以示纪念,以后每次我参加的都这样吧,一半严肃内容,一半水。

糟了,到最后才发现,今天忘记去找

@姬光

见个面了,只能下次……