这是第二次参加FEDAY大会了,这一次的广州行有些波折。先来吐槽一下,吐槽是为了期待以后有所改进,第一次经历航班晚点到凌晨2点(买的晚上9:15的机票),并且眼看着飞往重庆的其它航空公司的飞机都起飞了,唯独深圳航空的飞机飞不了,也很是心碎。倘若是因为不可抗拒的原因,例如天气、飞机坏掉,其实也可以理解,自认倒霉,只是到了起飞时间飞机还在南京,看了南京的天气也是没有问题的,为什么会出现这样的情况?官方解释是一会儿说南京天气原因一会儿说是南京机场限流,然而限流也不会只限制这一个航空公司吧,听其他乘客说深圳航空经常晚点,希望深圳航空未来有所改善,从自己内部审视调度、管理是否合理等,而非寻找客观原因,尽量去避免这样的情况。
从这次飞机晚点,我也得到一些启发。其实乘坐飞机也类似于一次产品体验,当我们开发某个产品时,一定要谨慎、细心,并且尽自己所能为用户提供更好的用户体验,因为有的时候用户体验的机会或许只有一次,如果第一次用户感受到不好的用户体验,那么以后在选择的时候就会避免这一项选择,没有什么特殊情况,大概率上不会再给你第二次的机会。开发好的产品,能够让更多的用户喜欢并且长期使用,我相信也是每一个程序员心中的一份期盼。以前把精力基本上都放在技术上,按照UI、UE图将项目完成,尽量避免bug,在一些明显的地方考虑一些用户体验,很少真正完整的去想开发的这个产品是否能获得用户喜欢。现在觉得这些不仅仅是产品、UI 、UE需要去思考的事情,既然要花这么多精力去开发一个产品,大家最终目的是完成一个好的产品,那么每一个人都应该去思考如何让用户更加喜欢这个产品,而技术只是实现这个产品的一个工具而已,当然也之后不断的提高技术,才能去支撑好的想法,而这两者其实是相辅相成的。有了好的想法可以迫使自己不得不去提高自己的技术,有了好的技术也希望能产生好的创意。
回到正题,这次feday大会一共讲了7个主题,我只能记录一下我的心得与收获,因为内容太多,现在还无法完全吸收。
一、JS面向对象的根基:无类继承 - 周爱民(Aimingoo)
1.周老师先介绍了一些es5和es6的对象知识,做了一个对比。
例子中主要涉及的知识点如下:
Object.setPrototypeOf(obj, prototype)
将一个指定的对象的原型设置为另一个对象或者[null
]
Object.create(prototype, descriptors)
创建一个具有指定原型且可选择性地包含指定属性的对象
class xxx
、class AAA extends xxx {}
默认的constructor方法
2.最后引申出了原子与元的概念,也是这个最重要的部分。
原子 - 构造函数为null ,不具有Object上的方法与属性
元 - 能产⽣原⼦的⼀个过程
原子有: arguments 、 namespace
产生原子的方式:
class Atom extends null {
constructor() {
return Object.create(new.target.prototype);
}
}
Object.setPrototypeOf(Atom, null)
new.target
一般用在构造函数之中,返回new命令作用于的那个构造函数。如果构造函数不是通过new命令调用的,new.target会返回undefined,因此这个属性可以用来确定构造函数是怎么调用的。
3.原子应用场景
当需要一个纯净的对象,不拥有其他对象包括Object对象的方法、属性时使用。这样可以保证当前对象的所以属性方法是自己可控的,不会被其他对象所影响。
二、kepler.gl在海量地理定位数据可视化的应用 - 何珊(Shan He)
我们有时会使用第三方的图表、地图来展示我们的数据,但是我们很少去了解这些第三方的地图或图表是如何实现的。
参加这次分享会之前,都不知道有数据可视化工程师这个职位,在我们使用哪些炫酷的地图或图表的时候,从未想过他们付出了多少汗水与心血,想想心中的敬佩之情油然而生。当然数据可视化不仅限于图表、地图,它有各式各样的表达方式,将枯燥无味的数据转化为生动形象的表现形式。
从何珊老师的分享中,可以看出她真的是一位非常厉害的人,她的知识面很广,并且都很厉害。
她讲述了数据可视化工程师需要必备的四个核心能力:设计、统计学、编程、讲故事。
正好她的学习历程,让她具备了这四个能力。
她最开始是学习的建筑设计,建筑设计的学习让她掌握了统计学和设计的能力,后来因为觉得这样的项目周期太长,希望更快的能获得成就感;于是转做UI/UE,更加巩固了她设计能力,但她又发现公司的程序员无法很好的实现她的想法;于是她又回到学校去学习编程,四个核心的能力她不知不觉就掌握了三个。当然讲故事的能力不需要特意去培养,在工作中不断积累,用心去做,将复杂的数据用简单的图形或动画表现出来。
从她的一个职业发展来看,她尝试了很多岗位,但其实每个岗位之间都是有关联的,并且为她后面的职业都打下了扎实的基础。其实有时候就是这样,努力做好现在的事儿,将当下的事儿做到极致,当发现自己缺乏或者想要做其他事儿的时候再去学习,专注当下、不断挑战,积累到一定的程度,或许生活真的会给你意想不到的惊喜。
最后她介绍了一些技术的东西,以及CPU、GPU,由于这一部分没有拿到ppt,有点记不太清楚细节了。不过最后介绍了一下他们团队开发的可视化工具kepler.gl,为大家造福,让大家不用重复造轮子,便可以使用他们的成果,为这样的共享精神点个赞。
三、复杂业务前端团队的进化之路 - 谢晓立
这一部分主要介绍了京东商城的业务、技术迭代的一个历程。他们主要从两个方面进行迭代:工具迭代、流程优化。
1. 统一前端工程化、静态资源管理
通过统一前端工程化、静态资源管理解决了两方面的问题:
1)开发体验
从创建项目、开发项目、线上部署都可以使用功能齐全的自动化工具、轻量组件化功能提升开发体验。
例如:less\sass编译、资源整合、资源压缩、热更新、路径替换、文件添加md5戳等等。
2)性能优化
首屏HTML代码直出、基于楼层的懒加载功能。
2.调研技术,最终决定自己造轮子
由于京东要求兼容到ie8,因此现在流行的vue\react\angular都无法使用(都兼容到ie9+)。
于是他们开发了类react高性能前端框架Nerv,尽量保证与react相同的api,并且兼容ie8。
3.多端统一开发框架 taro
由于业务需求需要开发小程序,而小程序使用的新的语法,mina结构,存在以下问题:
1)规范不统一
2)落后的开发模式
如:不支持less/scss、手动图片、JS压缩、难以使用npm依赖、无法使用TypeScript、不支持单文件组件等等
为了解决以上问题,做到开发一套,多端使用,京东凹凸工作室开发了taro框架,实现⼀套代码适配⼩程序/H5/RN等终端。
4.工作效率提升,但开发质量如何保证?- 流程优化
原始的研发流程 完整体系为了保证质量,京东开发了数据监控(检测模块可用性保证页面安全)、素材监控(监控素材尺寸与体积确保页面性能)等系统对项目进行监控,实现24小时预告警,解决了一部分问题。
但是整个听下了来,发现京东这一套东西,个性化比较强,适用于京东内部,可以参考和借鉴,但是无法共享与通用。
四、Webpack主题相关 - Sean Thomas Larkin
这一部分,因为是全英文分享并且也没有拿到ppt,目前能力有限,没能听太明白,所以无法总结什么心得。
五、如何正确点开技能树 - 陈广琛(Cat Chen)
所谓授人予鱼不如授人以渔,这一部分主要是就是对职业发展方向的一个引导。
陈老师以开车为喻,通俗易懂的让我们理解一个典型的前端发展方向。
1.学开车阶段
这个时候学习兴趣比较浓厚,并且也享受练习开车,但是这个时候是不具备独立在公共路段开车的能力,独立上路会比较危险,因此需要教练的指导。同样的刚开始学前端也是一样的,才开始接触各种基础都比较新奇,对各个技术都充满热情,也都很享受学习的过程,但这个时候还不具备独立开发的能力,需要前辈的多多指导,在项目中不断练习实践才能提高。
2.初拿驾驶证
经过学习并且通过了考试,刚刚拿到驾驶证。这个时候基本以及具备独立上路的基本能力,但是因为还没有什么经验,很容易犯错,比如容易发生擦挂等小事故。但是这些都是一个过程,不要害怕犯错,需要在犯错中成长,多开,多积累经验。前端到这个阶段也是一样的,刚刚具备独立开发的能力,可能在项目开发中会遇到各种各样的问题,但是只要一个一个的去克服,在不断的积累中,会变得越来越强大。
3.熟练驾驶
当积累一定的经验以后,对驾驶已经驾轻就熟了,可以想开到哪里就开去哪里,独立上路也比较安全。这个时候也具备了带新驾驶员的能力,并且在带新驾驶员的过程中提升自己的能力。前端达到这个接到,也需要尽自己的力量对新人作出自己的一些贡献,并且提升自己带领新人的能力。
4.类似导游
当驾驶经验积累到一定的程度,对当地的路线、地形基本上会了如指掌,这个时候如果需要从A点到B点,驾驶员可以作出比较好的路线选择,如果走更快到达、如何走路线最近、如何走路上的风景最美等等,这些都是非常了解的。当前端到达这一阶段,基本上可以达到对系统有一个比较完善的分析,拿到一个项目需求,可以做技术选型,知道项目选择哪一个技术框架最合适,性能最好,并且能够解决项目中出现的各种复杂问题,能够预测项目可能会遇见哪些风险。
5.组织者
当出去郊游等情况,可以为团队提供好的路线方案,并且领导团队成员通过相同的路线到达相同的目标。这一阶段,需要具备一定的领导能力。当前端团队不断扩大,人员不断增多,如何统一大家的编码风格,组织指导大家共同更好的完成一个项目是这一阶段需要锻炼的能力。
六、Time in JavaScript - 贺师俊(Hax)
这一部分主要讲了javascript中的Date对象所存在的一些问题,比如有些api不太好分是UTC时间还是本地时间,而这些问题是由于,JavaScript最开始是从java最初的版本copy而来的,虽然Java已经修改了,但是因为浏览器已经这样去实现了,当发现问题的时候也无法进行修改,为了避免老版本的页面无法正常运行。
推荐日期库,这些日期库内部解决了原生Date对象存在的问题:
七、把握趋势,你不容错过的Serverless - 杜欢(风之石)
这一部分由于事先没有了解过,导致听起来有点吃力,没有太多的体会。
网友评论