JSConf 2016参会所见所想

这是我第一次参加业内的开发者大会,决定利用一点时间回顾并整理参会的一些想法。在网上跟了3年的JSConf视频,我觉得把它称为中国质量最高的JavaScript会议也名副其实。

本人只讨论个人的一些看法,如果想详细了解大会内容,可以关注官网的视频和Slides,知乎上也有讨论。

参加 宁JS(JSConf CN 2016)是个什么样的体验?

实不相瞒,早在去年我就有参会的打算,奈何在深圳举办,天南地北实属无奈。所以这次我果断决定参加,早早地买好机票,订好酒店了。

暑假实训加之签证的事情着实把我折腾得筋疲力竭,于是我更加期盼这次的活动,让我放松一把。终于,我等来了九月。

本次大会在南京绿地洲际酒店举行,不得不称赞大会的格调之高。

走进大门就看到了JSConf签到的地方。领取资料过后,在志愿者的指引下乘坐扶梯到了七楼的会议大厅。

此时各大展区早已熙熙攘攘,有在扫描二维码领取奖品的,也有在跟工作人员交谈的。

由于我对这些展台毫无兴趣,就直奔会场找个位置坐了下来。由于去的不算早,只能坐的比较靠后了。

好在也才刚要开始 Intro Session,我跟邻座聊了起来。整体上参会的人年龄都不大,让我又有一种置身大学的错觉,实则大部分的人都是已经工作了的,我邻座的朋友也不例外,他在上海的一家创业公司工作,前端开发。可惜的是程序员大都不善言辞,我也没有找到更多的谈资。

很快,大会就拉开了序幕。

首先是Vue.js的作者带来的 The past and the future of Vue.js。虽然现场Vue.js的粉丝不要太多,老实说,我对此并无太大兴趣。整场下来,好似一场粉丝见面会,没有太多的干货。我个人对现代框架的喜好程度:React > Angular > Vue.js >= Ember.js > … 所以这只是我个人的体会。不过话说回来,Vue.js 2.0看上去很不错,虽然Vue的概念很多是借鉴来的,不过它也有所创新。Vue.js的活跃程度在国外也是可圈可点的,这已经是很大的成就了!

第二位演讲者是来自 Facebook 的工程师 James,他是 Babel 的核心贡献者,现在是 Flow 项目组的成员。他带来的演讲是 How to build a compiler? 说实话,当初看到这个演讲题目的时候,我是非常有兴趣的。他在现场讲解了一些编译器的基础知识,并使用他的一个开源项目 the-super-tiny-compiler 作为讲解。不过由于我先前已经认真阅读过这个项目的代码,因此这个演讲收获也不大。不过从他的 Slides 就能看出来,作者还是非常用心的,所有的图片都是他亲手画出来的,非常别具一格!编译器这个话题太大,也不是现场三五十分钟能够说清楚的,虽然这不是一门“必修课”,多了解一些知识还是会对日常的开发有很大帮助的。

《企业级框架EGG》,演讲者声音太小,听着很吃力,从Slides上也没看到太多自己有兴趣的内容,于是就跟邻座聊天去了。

接着是严清老师的《聊聊JS测试框架》,一上来就讲了JS测试的两个流派:Tape 流和 Mocha 流用法上的一些区别。我和严老师一样都是 Mocha 流。

然后严老师讲解了 Mocha 流测试框架的原理,主要是通过解析代码构造Context状态机的方式来确定测试的运行流程。总体上讲解很不错,由此我也对测试框架的原理有了一些理解!

现场还开源了一个GridControl项目,是PM2的作者开发的一个分布式控制的工具。还有3D和VR方面的演讲,视觉类的Talk往往很容易博人眼球,这方面的开发需要有图形学方面专门的积累,门槛不低。

中途午饭路上看到了图灵的展台,还看到了我前几个月翻译的《React Native开发指南》。

午餐不好吃,学校食堂的水平。

下午是郭达峰的 Building a Unified Frontend and Mobile Team,曾经有朋友介绍,我了解过Strikingly这家公司,他们做的产品是在线自助建站工具,属于重Web前端的产品,极具挑战性。这次他带来的演讲是从他们实际的开发中总结出来的团队组建方面的经验,即打造 Web + Native 全端团队。React Native的问世,敲开了全端新世界的大门,通过React / React Native,Strikingly复用了90%的代码,从他的介绍看来,这种方式带来了诸多好处。同时,达峰也提出了自己对未来客户端开发的一些畅想:客户端开发的统一。总体上我高度认同其说法和做法,这也是我十分看好 React Native 的原因。虽然需要编写一些Java和OC来辅助客户端的开发,但他们通过 TypeScript 的 Interface 保证了多端接口的一致性,这是一个很好的思路!

从这次大会的另一个焦点 Weex 的受欢迎程度就能看出大家对全端和热情。各大公司也对这方面有一些实践,其中有一个 Lightning Talk 提到了 React Native 在QQ中的实践,其实腾讯在他们家的很多产品中已经嵌入了React Native。下图是官网展示的使用到React Native技术的产品:

正如达峰所说,他们在使用RN的过程中遇到了很多坑,社区还不够完善,框架也不够成熟和稳定,尽管如此,大家也都在摸索中前进,这种积极的态度和对技术的热情是难能可贵的。

大会第二天的演讲我个人觉得比较有趣的有,前端 DevOps 实践、Rx.js异步管理、海量React高性能同构实践。

前端 DevOps 即前端来负责运维的一些工作,工程化、持续集成、自动化部署等内容。平时我对这方面有一些粗浅的了解,Docker、Jenkins,持续集成,其实这些都是软件工程的知识,无论是前端、后端亦或者客户端都应该对这些知识有所了解,这是百利而无一害的事情。

Rx.js 异步管理,我见到了 Ben Lesh,很早就在网上看过他的演讲,于是在会场一眼就认出了他。他是 Netflix 的高级工程师,Rx.js 项目的 Lead。 Angular2 就使用 Rx.js 作为其异步编程的解决方案,诸如 HTTP 这样的服务就是基于 Rx.js 的。那么Rx.js 是一个什么东西呢?其实也不难理解,Rx 即 ReactiveX,也就是通常所说的 “响应式”,它的核心就是使用 Iterable 迭代器的方式来操作 Observable,将异步操作抽象为集合操作,Rx.js框架本身提供了诸多API来操作Observable,功能很强大。

让我印象较深的还有来自腾讯Now直播的工程师带来的海量高性能 React 优化的演讲。其实演讲的内容与 React 关系不大,不过他们优化的思路很独特。为了尽可能地提高应用的首屏加载速度,提高应用性能,他们对链路进行分析,逐一排查,一步步地进行优化。例如使用 UDP 代替 TCP ,使用 ProtoBuf 代替 JSON 进行数据传输,React同构渲染,非必要的数据的处理,分级缓存等等。讲师的演讲有条不紊,思路清晰,对我有很大的启发!

还有其他的一些演讲,我没有很深刻的印象,要么讲师本身演讲技巧不足,要么演讲的内容我不感兴趣。

总体来说,参会的体验不错。不过,希望组委会今后能对讲师和演讲质量进行一下把关,毕竟观众是花钱参会,没有什么营养的话题还是不上为好。

每个人参会的目的不同,有的为了结识牛人、“网红”,有的为了体验和学习。我则是后者,体验为主,毕竟今后也不一定有机会再参加了。