2017年jsconf在柏林举行,为期2天,5月7日-8日。jsconf在前端领域是相当有影响力的,可以通过jsconf的分享内容了解前端技术驱势及发展方向。今年重点在以下几个方面:移动端的性能、各种nodejs编写的提高前端工程化效率的工具、reactjs的周边工具,angularjs已不被提起。es6已大面积兴起,es6+babel是最佳拍档。

会议举办还是相当专业的,分为主会场和一个分会场,以一段音乐party开场,主持人也用唱的方式表述了jsconf的开场宣词。每个topic的时间是30分钟,绝不拖堂,每个topic的演讲嘉宾都会控制在25-27分钟左右,整个会场严格按照议程进行,方便听众听取提前规划的参会议程。今年的特点是女性演讲嘉宾偏多,而且都特别漂亮。在演讲嘉宾分享后听众都会给予持续半分钟的热烈掌声(可能与文化有关,在国内很少听到有如此热烈和长时间的掌声)。
下面详细讲解下其中比较有意思的topic:
根据最新的2017年的数据显示,移动端的webpage平均需要16秒可以交互,19秒全部加载完成,js大小为420kb左右。之所以这么慢的原因是处理过程需要三大步:
1)、初始化请求-->返回html
2)、根据返回的html请求css、js、images--->返回css、js、images
3)、解析css、js、images再显示。
在web端解析时间占12.4%,编译时间占8.3%;移动端解析占13.2%,编译时间占10.2%。
如果要缩短可交互的等待时间,以下建议可以采纳:
3)、使用babel-plugin-lodash加载需要的最小化的module。
4)、prpl模式或http/2:
http/2(或称http2.0):
5)、requestidlecallback:requestidlecallback是2017年1月31日w3c定义的标准,使用requestidlecallback函数实现延迟图片的加载。
函数式编程的三大特点:
1):“immutable data 不可变数据”:默认上变量是不可变的,如果你要改变变量,你需要把变量copy出去修改,可以让你的程序少很多bug。
2):“first class functions(让你的函数就像变量一样来使用)”:你的函数可以像变量一样被创建,修改,并当成变量一样传递,返回或是在函数中嵌套函数。如javascript的prototype。
3):“尾递归优化”:即是递归调用放在方法末尾的递归方式。
本topic讲解了“不可变的数据结构”在js中的应用。使用mori工具,他的优势是共享此变量,而不是copy,性通上会比较有优势。下面看下具体代码示例:
开源社区的工具或系统组成了软件生态系统,而被依赖的软件如果代码变更结果可能是破坏性的,例如:删除、重命名 可能会在整个生态系统中产生波动,从而导致许多软件包维护者和用户的返工。变更的原因主要是:新功能,消除技术债务,提高效率和修复错误。不同的开发商和不同的社区对于谁应该支付变更的成本和时间有不同的态度。
1) eclipse:向后兼容降低维护人员的成本,平台稳定,开发者门槛较高。自2001年以来超过1600个扩展。代码中的方法使用弃用制,而不是删除,已弃用的方法保留>10年。
3) nodejs: 一个比喻“上个星期的教程今天已经不适应”,门槛较低,社区没有审查或测试要求,自2009年以来超过25万个npm包,并且仍在快速增长。npm平台有一些不寻常的特征,即一个包的多个修订版本可以在同一个项目中共存。开发人员可以轻松快速地发布和使用包,社区对于快速变化而言是开放的,并且具有实验api的文化,直到它们是正确的。草根推动,重点强调工具建设和社区。
所以各个开源社区采用什么样的行动与其“价值观”高度稳合。eclise与nodejs形成了鲜明对比,一个是以稳定向后兼容为价值观,一个是以草根、使开发者轻松快速发布和使用包为价值观,你的社区主张什么价值观呢?