2018年度总结-工作篇
2018 年结束就代表毕业以及工作一年半了,不管是业务熟练程度还是技术掌握都有了自己感知得到的进步。回顾这一年的工作
- 接触的浏览器平台也从 web 端,PC 软件内嵌 H5,转到了移动端,有 H5,也有 APP 内嵌 H5,还有微信公众号平台,bug 也各不相同
- 使用的库也从 jquery 转向了 vue+vant 和 react+antd
- 做的产品也有面向用户、面向销售以及面向内部人员
- 写的项目也从简单的后台管理系统到对外客户使用的复杂项目,还有复杂的管理后台系统,抽奖、火箭逐帧动画
从只会跟着 PRD 写页面调接口,到自己写一套商城系统,到自己从头主导构建小项目
以上这些都是今年工作上的进步。
除了明显的代码效率和质量上的提高,还有一些心态上的转变,之前很惧怕学习和写 react 项目,担心会因为自己的不熟悉拖延项目进度和降低整体的代码质量,后来由于任务分配而不得不接受要去学习 react 使用的事实(其实一部分是很不喜欢把 html 也写到 js 里,代码整体显得很冗余和笨重)。其实通过组件化来管理自己负责的模块是非常得益的,通过把代码按照模块拆分来其实也降低了复杂度,并且能让自己理清有时非常绕和复杂的需求。
学习的过程非常枯燥和纠结,一方面和自己已掌握的库对比好像又懂了,一方面怀疑自己只会皮毛和简单的使用而不是真正懂他的原理和流程。例如前段时间学习了 redux(博客里有一篇简易的 demo),其实官方的教程有点不是很好理解,然后去找了相关的视频,跟着学习和实践了一次,但是只是单纯的会用,并且记不得调用的过程(只记得简单的应该要建一个 store,然后通过 dispatch 去调用 reducer 里的方法来改变 store 里的值,各个组件通过 connect 共享同一份 store 里的数据,相当于共同的 state,但是并不记得应该如何创建和调用这些流程,每次要写都要去翻之前的代码和教程),后来下定决心搞懂这个 redux 的流程,翻了很多别人的示意图结合之前看的视频,自己画了一个 redux flow 图,这个过程让我想清楚了他的工作流程。并不是说单纯的学到了这个知识点,而是意识到了之前自己的学习方式只是很松散的了解或者使用了一个知识,我也可以认真的去钻研一个点,能够用自己的话讲解并且讲明白这个东西才是真正的懂了。
学习 redux 过了几个礼拜,刚好有个新项目需要我主导负责,并且也负责一整块的需求,其中一个需求是一个带有分组的菜单栏,菜单栏中可以修改分组名,点击展示内容,内容中也可以修改分组和菜单名,我拆分成了几个组件,相互之间传参回调之间特别麻烦,就想改造成 redux 统一管理菜单的信息,之前项目惯例使用 dva,有了前段时间 redux 的知识储备,上手就变得比较简单了,改造起来效率也非常高,还是很有成就感的。
关于负责一个小的新项目,还是有一些感触的。项目在过需求和项目开始之间的空档期,需要考虑技术选型和写基本的公共方法和样式,由于新项目是个数据服务系统,之前参与过别的类似项目,也是沿用之前的那一套 react+antd,但是基本的菜单栏和公共导航是需要自己写的,需要考虑需求和公共部分是否有联系,比如,点击导航如何显示切换页面;菜单栏收起时是否需要在 basicLayout 里传回调,告诉 children 现在的收起状态;还有哪些组件或者样式是可以共用的等等。除了前端几个成员的配合之外,还要和后端和产品的配合,有哪些需求可以更改,哪些可以通过前端自己实现,哪些需要调接口,实现方式是什么,都需要进行商讨,初步了解了对项目整体的一个把控。
由于需要对项目负责,所以要负责给前端伙伴解决一些问题,有别的项目介入,需要分摊时也要接手写了一半的代码,还要解决别人的 bug 和关于公共部分的使用问题,解决别人的 bug 和接手代码都是很需要耐心的事情,也很有技术含量,需要了解别人的具体业务逻辑和 bug 出现场景来推断原因,有些也不是逻辑问题,可能是生命周期和 API 不是很熟练,可以从别人的代码里学到一些技巧和吸取一些教训,是开心和暴躁的体验。接管的话代码风格不同,所以需要重构一下,按照自己的风格去拆分功能,过程是很痛苦的,结果是很有成就的。
还有对一个复杂业务逻辑的思考。由于工作性质,基本上都是用键盘来写字,但是有时候需要静下来仔细思考,用本子和笔来画思路流程,这是个很好的整理思路的方式。比如今年做的一个滚轮抽奖动画,有用户展示端和发起端,思路
发起端流程有:开始按钮->开始抽奖动画,3s 倒计时,按钮 disabled->动画停,停止在中奖人处,开始按钮可点击->抽奖次数结束后按钮消失
- 动画方面:展示框可显示七条抽奖人,动画滚动 2.5s 后最后一次滚动将中奖人放在中间,动画由快变慢最后停止
- 数据处理方面:抽奖人少于七人时,重复抽奖人为七人,正常情况下,每一次滚动都截取抽奖人数组的七段,到了末尾再从头截取
调接口方面:一进入展示框就查询所有的抽奖人,点击时调用开始接口,动画停止前查询本轮中奖人并查询是否是最后一次抽奖…等等
诸如此类的复杂需求可以循序渐进分类整理自己的思路。
以上是 2018 的一些教训和总结,如果有想到再接着补充。以下是对今年 2019 的学习展望。
对 ES6 学习的巩固,尤其是块级作用域、函数、数据类型及其方法、迭代器、类、promise、代理反射、模块化进行学习实践,学会项目中常见的处理方法
- MVVM 的原理学习,对 vdom、双向绑定、渲染机制有自己的理解,目标是做一个简单的实现
- HTTP 方面,有深层次一点的了解
- typescript,在学习的基础上,在项目中有稍微复杂一点的实践
拓展类:hybrid,node,数据可视化
具体的计划视情况而定进行调整。
末:希望 2019 还是元气满满的学习和工作,不要轻易放弃呀。