2020 Anker前端团队前进探索之路

879 阅读7分钟

任何可以使用JavaScript来编写的应用,最终会由JavaScript编写。

上面的atwood定律曾经让使用js语言做为核心技术栈的前端饱受诟病,但是随着时间的推移,JS语言在跨端,多屏幕,服务端,数据库,甚至于到机器学习/AI/区块链发力。这使得以JS做为核心技术栈的前端工程师想象空间越来越大,能力触达的范围越来越广,能够解决的问题越来越多,竞争也越来越激烈;

同时"别更新了,学不动了"在前端圈内声音也渐渐出现,那么在纷繁复杂并且蓬勃发展的时代里,前端工程师如何前进,如何跟上时代的浪潮,在业务工作压力下如何进一步提升自己的技术能力,以上既是每个程序员需要思考的问题,也是整个团队持续向前需要解决的问题,也是我想陈述的问题;

打好基础:绘事后素

开始的开始:我希望以一个典故开始:

子夏问曰:巧笑倩兮,美目盼兮,素以为绚兮。何谓也? 子曰:绘事后素。 —— 《论语.八侑》

译问:子夏问于孔子,诗经中描述女子美貌的诗句能给我们什么启发呢? 孔子回答说:先要有白纸,才能在这基础上描绘色彩,用现代通俗的话来讲就是,先要打好粉底,才能上彩妆;

要做出好的结果,需要先打好基础;

所以无论对于任何阶段的开发来说,打好基础比追赶风口更,特别是对于很多初中级前端来说。在日常面试过程中,经常发现很多人对于js基础,css基础都理解有偏差;对于浏览器的运行机制也是一知半解;虽然能够在技术Leader搭建的框架下完成日常工作,但是自己框架如何实现的权限控制,组件封装,事件广播都无法描述清楚;这就很可能导致一旦接触到整体功能设计,难点解决,问题分析之类非业务功能开发的场景下,就无从下手,束手无策的尴尬境地。究其原因就还是基础不扎实;

所以作为团队内的每一个人,不断的去扎实基础是永恒不变的课题;

技术升级:20年点亮技能树

Js基础,CSS基础自然是前端的所有技术栈的根本,在此就不赘述了。(ps:关于基础知识的"温故知新"以团队内读书分享的方式在进行,初选书目《JavaScript 权威指南》,《CSS 世界》,《深入浅出 Node.js》,《代码整洁之道》请期待后续分享)

此外前端走出浏览器已经成为大多数前端工程师的诉求,走向原生,走向服务端,我们选择了如下技能树在2020年点亮

Vue3.0

Vue3虽然最后的升级是保留原有vue2.0的设计,但是vue3.0给我们对于代码组织,模块封装,乃至于工程化后,对于个性化需求插件化都提供了新思路,2020年我们将深度使用vue3.0,在新工程上全面使用vue3来实现,在新工程上积累一定经验后,会对老的框架整体升级切换;

TypeScript

Ts这门语言在初中级前端看来,是束缚手脚的绊脚石,实现同样的功能需要写更多的代码,在高级和资深开发来说,这是保证系统稳定的又一利器,随着Ts逐渐在开源社区内被广泛使用,特别是vue3本身源码由ts编写,对于vue深入使用的团队,很难不去学习和使用Ts,否则可能未来vue的乃至于vue全家桶的源码都会对我们关上大门;

单元测试

现在日常工作中发现很多问题,是由于新功能的开发引发了老功能的bug,那么如何在对于历史代码和功能处于相对不熟悉的情况下,快速落地新功能,并确保高质量相信是每个前端团队都会遇到的问题;所以对于前端代码的自动化测试已经迫在眉睫,而所有测试的基础就是从单元测试开始,我们计划H1完成核心的基础组件与业务组件单测覆盖率达到100%,以确保后续组件的升级换代工作能够在低风险运行;

Node.js

身为软件开发工程师的一员,我们日常工作的本质就是提升效率,而提升效率的途径就是根据标准化的流程和接口,开发工具;站在这个角度上来看前端工程师如果只能做浏览器内的工作,就像是人少了条腿,我们无法独立的生产工具,而市面上越来越多的工具,乃至于一些技术公司,前端已经转化成为了JS全栈,比如最近我们开始使用的接口文档平台Yapi,就是由js全栈完成的,所以明年我们决定自研埋点监控系统,虽然我们不可能所有功能模块都使用js技术栈完成,但是我们会由前端团队来整体完成整个应用的实践落地;

CI/CD

在公司现有的jenkins工具下,已经可以省去很大一部分手工构建的工作,但是这远远不够,日常工作中,MR审核之后的工作我们希望完全交给机器去执行,并不是因为我们不愿意打开jenkins去多点一下构建任务的按钮,而是,在非正常场景下,如果出现错误,我们没有办法及时通知对应的相关人员,错误日志还需要手工粘贴复制给对应开发,包括后续我们还需要在CI/CD中添加自动执行测试脚本的工作,未来代码提交合并,发布到各个环境都是涉及多个环节和多个流程处理的,如何在未来越来越多的项目中确保人工处理不出错,出错了能够及时提醒对应开发人员,开发人员能够快速定位和响应issue成为我们需要解决和攻克的问题;

Electron

相信做为前端工程师都知道日常工作使用的VS Code就是基于Electron开发的,基于此给予了我们团队极大的信心去尝试桌面应用的开发,比如会议室管理(公司会议室设备是运行在windows上的),以及配合扫码终端的业务场景内,通过条形码,二维码跨端传递,输入数据,并且直连打印机,完成扫码 => 打印的便捷操作;同时这也是让用户完成一些业务场景纯移动端业务闭环的可能;

移动端跨平台能力

由于公司在移动端发力较晚,移动端基础比较薄弱,而同时移动端积累的需求长时间被压抑,在19年做任务收集的时候头脑风暴出很多移动端的使用场景,发现各个业务场景对于移动端有关于H5,钉钉小程序,微信小程序,乃至原生App的诉求。

总结

这些前端的能力,在大厂的开发看来是早已实践过并长期使用的,对于小公司来说是业务无关的,但是对于成长中的anker前端团队来说,我们正面临从小到大的过程,从满足业务诉求到稳定提供输出,并且可持续发展的阶段,我们要感谢前人为我们探索出来的路径,但是我们依然需要站在路的起点,披荆斩棘的紧追而上,走过前人踏过的路,看到前人看到的风景,最后以一句话送给所有在技术路上筚路蓝缕,经历坎坷的小伙伴们共勉;

技术让我们无所不能,我们让技术无处不在