得益于版本的顺利提交审核,周四五获得了参加GMTC大会的机会。本篇文章针对周四上午的GMTC大会做出笔记与总结。
GMTC全球大前端技术大会是由极客邦科技和InfoQ中国主办的顶级技术盛会,这次大会是在国际会议中心,以下为大会内容。
GraphQL
第一场是Sashko Stubailo的GraphQL技术,Sashko Stubailo是Apollo GraphQL leader,一个facebook的外国小哥,介绍了GraphQL,由facebook开源,是一种用于 API 的查询语言。原来我们从服务端获取数据的时候通过restapi,获取一堆的json数据,除非后端特意的定义了给前端的dto,不然那可能会获取很多不想要的数据,而通过graphql可以获得你指定的数据,减少了冗余。它可以沿着资源间引用进一步查询,就是说以前我们查询多种数据,可能要发送若干个请求,而GraphQL 可以通过一次请求就获取你应用所需的所有数据。它也能够与现有代码进行兼容。这是GraphQL代码:
我们看到GraphQL对现有restApi的冲击,也许不久就会代替rest。那么我们要怎么使用GraphQL,这里Sashko Stubailo提到了Apollo,它是一个框架,可以认为是一个网络库,在每个平台都会有,我们通过Apollo发送查询数据请求,服务端返回查询到的数据,通过Apollo解析。
附GraphQL中文网:http://graphql.cn/
Apollo开源地址:https://github.com/apollographql
大前端趋势之下的驱动力
第二场是大前端趋势之下的驱动力,主讲老师是APICloud联合创始人兼CTO邹达。十多年的浏览器引擎和移动引擎开发的老司机,最早的混合开发实现者。
主要围绕着APICloud进行展开,先简单的描述了前端的状态,需求的导向,技术的成熟度。然后API中台的形成,可以通过APICloud快速的定制出一款产品,APICloud包含了600个模块,10000个API,模块中也包括了原生模块,就是通过现有的api组件快速拼接一款应用。降低开发成本,减少开发时间,强势的输入了一波广告。最后还推荐了一本自己写的书籍。当然也确实是一种强力的app开发输出。
之前有在神马的朋友,也做过类似的产品研发,但是组件全原生定制,开发效率比较低,需要一定的技术基础,最终没有推起来,不过扔然是一个很好的尝试。如果是外包公司,或者是前期打市场,亦或是企业办公政府办公,也不妨是一个选择。当然如果是需要一定的产品体验,个性化定制,可能就需要更好的平台,这个需要业务方向的评估。
Flutter
下面出场的是谷歌Flutter框架工程师Xiao Yu (于潇),演讲主题是使⽤Flutter快速构建集美观与⾼性能于⼀体的移动应⽤。这是唯一一场被掌声打断几次的演讲。
首先分析展示了移动和台式机的使用时间,从图中我们看到了台式的逐年递减,移动的逐年递增,这个是美国的数据。
这个是中国的数据:
从上述图中我们看到了,移动市场的递增性,正在一步一步的吃掉大部分的时间。同时还有一组数据展示了人们在使用常用app的时候,一般局限于20个以下。另一组数据展示电子商务的交易量成倍的提升。由此可见人们对移动App的依赖性越来越高。基于这样的需求下,提到了在开发中需要高性能,多平台,精美的定制特性,并且同时提到了移动开发的困难,太贵、太慢、高质量太难、工程资源难以共享,那么怎么解决这些问题,这时候flutter出场了。
那么flutter是什么,它是一款移动应用程序SDK,一份代码可以同时生成iOS和Android程序。核心原则是Flutter包括一个现代的响应式框架、一个2D渲染引擎、现成的widget和开发工具。Flutter能够在iOS和Android上运行起来,依靠的是一个叫Flutter Engine的虚拟机,Flutter Engine是Flutter应用程序的运行环境,开发人员可以通过Flutter框架和API在内部进行交互。有过安卓开发的同学都知道,Android应用程序是运行在Dalvik虚拟机里面的,而flutter的应用是运行在Flutter Engine里。Flutter在iOS中的是利用平台的runtime来运行,runtime是用汇编编写的一套机制,苹果的原生系统就是利用runtime。所以Flutter自己定制了一套底层库,来达到与原生应用相媲美的程度。从下图我们可以看出Flutter是直接到GPU进行渲染,并没有进行线程切换,直接编译至arm,而weex、reactnative都会进行线程通讯,js桥接等造成性能消耗。这个可以算第二个掌声。
那么第一个掌声发生在哪?当讲师现场编写代码演示的时候,并且在iOS模拟器上能够时刻的产生变化,它不需要编译,甚至不需要刷新页面就能够及时的产生效果。Flutter的热重载可快速地进行测试、构建UI、添加功能并更快地修复错误。在iOS和Android模拟器或真机上可以在亚秒内重载,并且不会丢失状态。
最后介绍了闲鱼app部分页面使用了flutter,在下午的大会上会有闲鱼的工程师分享flutter在闲鱼上的应用。Flutter中文网直通车:https://flutterchina.club/
Clould Studio
大会第四场是CODING 创始人&CEO张海龙带来的Clould Studio,这是一款云开发环境,可以在线开发、调试等。同时 Cloud Studio 集成了 Git 代码版本控制, 用户可以选择 TGit、Coding、GitHub、BitBucket 等任意的代码仓库。 Cloud Studio 还提供了分享开发环境的功能, 用户可以保存当前的开发环境, 分享给团队的其他成员。
基于多海外项目的离线缓存方案
来自掌众集团的刘弟新为我们带来了离线缓存的方案。
首先基于项目的背景做了介绍,多网络,多国家的android SPA应用。做过开发的都知道SPA就是单网页应用,我之前也涉及过单页面应用的开发,当时还是用sancha,框架用的是extjs,底层原生用的phonegap,也就是Cordova。当时是把包打到了本地,并不是放在服务器,当然那是很多年前了,那时候跨平台app还没有兴起,由于技术框架机器等各方面原因,个人的技术也不足,app卡顿时常发生。
在掌众集团看到了他们的解决方案
由webview发起请求,到拦截器,查找缓存,没有命中则通过服务器请求数据,命中进到缓存管理器,通过时间等判断是否使用缓存或者更新缓存,最后返回给webview。缓存的整体思路是这样,但是随着时间的过长就会出现新的问题,产生越来越大的缓存包,快速迭代的时候仍然需要等待。既然缓存过大,那么解决方案就是拆包,通过web资源的拆分、资源分类管理、每个页面组件增加页面内入口模块标识,进行动态的拆分重组包。快速迭代的时候仍然需要等待的问题,则采用了懒加载方式,对与一些当前页面没有使用的组件和库只采用了声明的方式,减少页面渲染时间。
由此我们看到了,对于SPA应用提高性能的其中之一解决方式是对缓存的加持。
前端团队的成⻓性探讨
上午大会的最后一节,是百度前端技术部副总监⾼磊的前端团队的成⻓性探讨。围绕职责目标的选择,⾼磊提到了几个case。
CASE1: 百度“极速搜索”项⽬
冲突: 研发效率 VS 展现速度
解决⽅案:1、速度优先,开发效率的降低可以暂时接受 2、研发效率可以有多种途径来解决
CASE2: 百度搜索“前端改版”项⽬
难点:500+样式的重复修改
解决⽅案:其实我们解决的是基础技术设施的问题
CASE3: BOW(Brilliant Open Web)项⽬
出发点:1、业务要求 2、技术特点
结果:新空间、新资源、新愿景
围绕团队成⻓关键管理因素的几个case
CASE1: 百度“极速搜索”项⽬
衡量指标:1、过程指标:速度、稳定性 2、结果指标:⽤户点击(体验)
CASE2: 搜索前端的架构技术团队
衡量指标:
1、业务⽀撑性:有 VS 没有 2、结果指标(⽤户体验提升):建⽴新指标
个人管理经验不足,考虑过两点,一个是规矩,一个是人文。规矩就是阶段性产品项目的完成目标,人文就是个人的成长目标,当我们完成了产品目标的同时也能得到个人的成长才是双赢。而一个拥有自我驱动力比较高的人的团体,还需要管理么,他们爱着这个行业,一天不产生bug浑身难受。
![扫一扫关注我吧](https://upload-images.jianshu.io/upload_images/11238923-b7da656d9ec2b746.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)