2019年第14届D2参会记录

一年一度的D2论坛,今年第14届依然和上一届一样,在同一个酒店-杭州和达希尔顿逸林酒店,这次和两个小伙伴一起同行,早上5点半起床赶高铁,正好9点左右到会场,赶上圆心的开场演讲。

2019年,对于前端来讲,有很多大的变化,serverless的逐步流行,TypeScript逐渐成为前端项目开发的首选,微前端的落地等等,这些趋势在会上的主题演讲中也有体现。

六大主题

本次大会安排了6个专场:

  • 语言框架
  • 智能化
  • 微前端
  • Serverless
  • 工程化
  • 多样化领域

这些主题的选取也体现阿里前端技术委员会对前端趋势的理解,几个方向的演讲都有小伙伴们在探索实践,就如圆心在开场所讲,前端在垂直领域以及深度方面有更多可以探索的内容。具体的演讲主题可参考D2官网

听讲主题

圆心 - 开场演讲

圆心,作为阿里前端委员会的老板,每届会议的Keynote主持人。本次开场,讲到了这几个方面:

  1. 前端领域在扩大
  2. 2C -> 2B在慢慢增长,垂直领域出现更多机会
  3. 云端机会,业务和稳定性的要求提高
  4. 智能化,减少重复劳动,投入到业务及深度的探索
  5. 关注语言的底层,寻找参与制定标准的机会
  6. 多端一体化,wasm、IDE等

克军 - 微前端架构体系

久闻克军大佬之名,这次终于见到真容。讲得是云时代的前端架构,微前端架构体系,这是一个体系,并不单单指某一个微前端的框架或者库,包含了从前到后的几大方面。

从前端架构历史演进着手,逐步说明了微前端带来的变化,我的个人理解,微前端主要在中大型项目中为项目的灵活维护和部署提供了一个手段,并且可以将不同技术栈的前端应用集成在一起。

克军提出的微前端体系,包括了这几个部分:

  • 微前端基础设施
  • 微前端配置中心(版本管理、发布策略、动态构建)
  • 微前端观察工具(运维职责:可见、可控性)

微前端的主要原理,通过一个主应用来协调各应用之间的切换,实现协同工作。

甄子 - 前端智能化实践

这个主题演讲是关于智能化的,对应的开源项目是阿里imgcook,利用Tensorflow.js机器学习实现自动切图,由设计稿到逻辑代码。介绍了背后实现的思路,整体下来听着比较枯燥,表示没太明白。

其中提到了一个阿里近期开源的项目pipcook

陈垒 - fibjs 模块重构 - 从回调到协程

这个主题主要讲后端nodejs相关的开发,通过对比nodejs回调和fibjs库中同步调用的性能对比,讲解重构和推广fibjs,没有听完。

张伟、马航 - 前端工程下一站:IDE

IDE最近也是一个很热门的方向,有很多公司都在做,不管是云端的WebIDE还是桌面端,通过Electron技术可以将web技术栈的实现转为桌面端。由于这几年VSCode编辑器大火,很多项目基于VSCode开发了自己的IDE,服务于他们的配套产品,例如小程序等等。

这里介绍的是阿里开天的项目,兼容VSCode的一个IDE。

Nicolò Ribaudo - Babel: Under the Hood

一个意大利大学数学系的小哥来讲了Babel背后的原理,主要介绍了一下Babel的主要工作流程以及涉及到哪些核心的库。

Babel主要是基于AST来对代码进行解析和转译。

玄寂 - 基于浏览器的实时构建探索之路

这个主题介绍了在浏览器上的构建方式,比较熟悉的产品有CodeSandboxStackblitz

从这几个方面介绍了如何实现浏览器的构建:

  • 加载器
  • 文件系统
  • 编译系统
  • 包管理

Ahmad Amireh - Distributed Front-End Architecture

这是HappyPack的作者,分布式前端架构,其实概念上和微前端的类似的,不过演讲中提到他们的实践中用了例如consul的服务发现工具,以及如何去实现应用的切换,还是蛮精彩的一个演讲。

前端未来

对前端的未来做一下展望,有很多新的技术有望落地发展壮大,

  • ES2020有望新增几个实用的特性
  • 智能切图的准确率提高,这一点我还是有点抱怀疑态度,实用性和准确性达到的程度
  • 微前端逐步标准化,成为大型单页应用的开发模式
  • Serverless的推广,提高前端的地位,往后再走一步,并且关注运维而不用被运维拖累
  • WebIDE让编码构建更美好
  • 多领域开花

关于前端2019年的总结和未来展望,这里有一篇文章不错,有原文和译文,值得一读。

JSConf China 2019

上周末刚参加JSconf China 2019, 在这里聊聊记录一下感受。

大会简介

本次在上海举办的第7届JSConf China大会,也是我第一次参加JSConf China,参加完这次会议,也完成了年初给自己定下来的一个目标,一年参加两次技术会议,上一次会议是D2(其实也顺带参加了SEE Conf,蚂蚁金服举办的,同一个周末)。

几个主题

具体聊一下印象比较深刻的几个主题演讲:

The Beauty of TypeScript,这个主题由微软中国的工程师韩骏分享的,介绍了TS的优点,主要是解决JS开发时的痛点,引入类型,支持编译并兼容JS,适用于多人大型的项目开发。介绍了@ts-check、@ts-uncheck、@ts-ignore和any作为从JS迁移TS的一些辅助手段。

面向传统,Serverless 进化之路,这个主题由阿里的大佬陈仲寅分享淘系前端在Serverless的探索和落地经验,从他们的实践上看,上了Serverless之后相对原来的资源消耗,在双十一的情况节约30%左右,平时可节约40%,还是一个不错的表现。另外,好处有几个方面,降低运维的难度,自动扩容和监控,方便发布,集成特定的环境不用浪费时间在安装组件和兼容性方面;另一个方面,服务由函数来实现,原服务端的功能由前端来实现,也就加重了前端的工作量,这一点不能说是坏事,前端的工程领域更加扩大,其实在nodejs做bff的场景下,前端已经往后端走了一小步。

中间一个小插曲,腾讯云来做了一波推广,用他们的服务做了一个现场演示,FaaS支持比较方便的编写和发布,现场险些翻车,演示了一个圣诞帽戴在头像上方。

write code to refactor code, 这是一个妹纸介绍了使用AST(抽象语法树)的方法,来进行代码重构。通过写一些脚本,分析出代码结构,从而进行一些重构的工作,比如替换等。另外,使用AST还可以做很多有趣的事情,转译、Lint等等。

去除迷雾,漫谈WebAssembly, 一个小哥讲述了WebAssembly的运行过程,以及介绍了相关的使用资源,https://wapm.io/是一个WebAssembly的包管理器,类似于NPM的角色。介绍了Rust与WebAssembly的关联,可比较方便的从Rust转换代码到Wasm。

会上的前端趋势

从这次大会上看前端的一些趋势,其实几个热门主题这几年一直都比较火,很多大会都有安排相应的演讲:

  • TypeScript和Vs Code编辑器很火,用得人也很多,从现场的提问来看,大家普遍对TS比较关心
  • GraphQL很香,但是用的人并不多,或许上的成本比较高,而且有坑
  • Serverless前景还不错,提高生产力和降低成本,但是路还很漫长,感觉适合小型团队或者个人
  • WebAssembly正在逐步被接受和落地

感受

大会的整体感受,内容比较偏入门,深度和可欣赏性不够,干货不多,与门票的价格不相符。其中有两场Nike的演讲,与前端貌似没有多大关联。下一届应该不会参加了。具体的吐槽可以看看知乎上的回答

接下来就看12月份D2的表现了。

2019年D2和SEE Conf的参会感想

2019年的第一个周末在杭州参加了两个都是阿里主导的前端技术会议,一个是SEE Conf,另一个是D2,从参会人员规模和演讲嘉宾来看,D2的级别更高一点,干货也更多。但是,SEE Conf的初心是很不错的,而且也是免费分享,提出了体验的重要性和可持续的未来相关观点。

SEE Conf

SEE Conf,全称是Seeking Experience and Engineer Conference,关注体验和工程,他们的口号是探索极致用户体验和最佳工程实践,他们也是身体力行的在探索。

从一整天的会议听下来,不免有一些蚂蚁金服在推广他们的开源产品,但是其中也分享了不少新鲜的观点。这里列几个对我印象比较深刻的主题。

玉伯提的SaaS应用和体验

开场玉伯致辞,久闻大名,第一次在现场见到,很接地气。

玉伯提出了当前SaaS应用渐渐成为主流,也因此应用的体验变得日趋重要,这也是他们一直在推行探索体验技术的一个推力之一。另外一点,现场中玉伯也提到了Ant Design项目的“圣诞彩蛋”项目,并且现场道歉了,对于开源项目的态度还是比较诚恳的,对于后续他们对开源项目的维护有些期待,希望阿里和蚂蚁对开源社区多用心,负责。

同济大学娄永琪院长的《交互设计与人类未来》

这个主题前半部分一直在谈人类的历史和地球面临的问题,一直没有和设计扯上关系。到了中期,慢慢过渡到交互设计,人类可持续发展与设计的关联,再扩展到设计与社区的实践。这个主题分享确实能开阔眼界,学术前沿的研究方向。

其中娄院长提到了其中一本书《翻转极限》,应该值得一看,讲目前人类遇到的种种问题,以及现今的解决方案。

林峰的《科技与人文结合的体验度量》

相信很多人知道林峰是因为ECharts,现在林峰应该是在蚂蚁带领可视化的团队。林峰的演讲整体给人的感觉,演讲很流畅,口才听好的。演讲的内容也很有趣,主要谈及的是产品在体验方面的定量度量方法,并且能提供建议,他们内部的产品名称是“九色鹿”,应该还没有开源。主要的依据是PTECH指标,后续可以了解一下,TECH指标是在上一届SEE Conf中提出的。

云谦的《蚂蚁金服前端框架探索之路》

用过dva和roadhog项目,在github上的id是sorrycc,现场看到真人和头像不怎么像,可能是胖了。

这个分享中云谦提到了蚂蚁金服在前端框架选型和造轮子路上,一路走来的历程,从roof、redux、dva、umi,踩过不少坑。现场看,他们内部主要在用umi以及基于umi的一套插件生态,dva他们只用在数据流方面,已经濒临淘汰;不过现场的观众来看,还是有不少人在使用dva,大家也表示出对dva后续开发维护的担忧,云谦给出的答复是,dva后续会有第3版的升级,roadhog将会进入维护模式。而且,期间云谦也分享了他在技术选型方面的建议,除了技术或者工具本身的情况,另外还有一点是运气。

D2

今年的D2是第13届,据说来参加的人数有近千人。之前听说是没有收费的,今年也开始进行收费了,场地选在杭州下沙的和达希尔顿酒店,场地费应该也不便宜,这次会议不止是阿里的专家演讲,也请了外边的好几个讲师,包括facebook工程师和德国的小哥等等。整体而言,干货很多,也了解了当前前端方面的一些趋势。

有关前端趋势方面,前段时间,2018年的stateofjs网站进行问卷调查,出了一个js生态相关的报告,可以了解到世界范围前端的趋势。这里,阿里的的前端委员会主席圆心也提了几点,主要涉及几点:

  • 前端往无线端
  • nodejs生态的成熟
  • toB业务对前端的要求见多
  • 前端工程化
  • 前端渐稳定,国内选择前端框架主要在react和vue

从整个会议下来,Angular基本被国内开发者忽视,国内的开源生态也基本是基于react和vue。

GraphQL

台湾小哥王启安带来的GraphQL实践,布道。国内的实践还是处于萌芽阶段,真正使用的团队还比较少,不过GraphQL相对于Rest API而言,性能上是有很大优势的。通过前端自定义查询字段,从而减少http请求和无效数据带宽浪费。相信这是一个未来的趋势。

海量数据渲染

阿里西蒙有关天猫双十一的海量数据渲染,涉及到WebGL 2、WebAssembly等的使用和优化案例,很精彩。

大规模地理数据绘制

这个topic是有关大规模地理数据的绘制的理论研究,其中提到了一些方法,蓝噪声采样处理数据,以及如何解决大数据量的前端绘制的方案。其中提到,数据量较大的情况下,其实有些时候是可以在后台进行绘制,而前端进行展示。

React suspense API

来自Facebook的工程师,讲解了suspense的使用,用于组件懒加载时显示loading内容的方式。以及介绍了后续react支持异步数据加载的API,值得期待。

WebAssembly

这个topic是由法国的一个哥们讲的有关WebAssembly,由浅入深的讲解,没有过实践,也只能听听。从D2整体的报告来看,WebAssembly技术在国内外实践落地的不少,而且从兼容性来看也基本可以上生产了。

Class Field

最后一个报告是在第3号报告厅,听的Hax讲的关于JS中Class Field相关的问题,据说是浓缩了3个小时的精华,信息量确实很大。这个话题主要涉及到ECMAScript标准中有争议的内容,槽点较多。

结语

今年的主题,都比较有含金量,毕竟是收费了,还是值得参加的。另外,还有一些感兴趣的话题,时间上是冲突的,没法去听,后续通过视频回放再看。