前言
转眼18年已经过半,到公司已经快一年了。从年初到现在的这半年间切实体会到了什么叫做痛并快乐着。从做寄养开始,压力就一直伴随在身边。用新技术处理新业务这一选择,直接导致我们前端开发人员一度崩坏。但是,自己做出的选择,含着泪也要把它搞定!不过,现在回想起来,那真的是一段弥足珍贵的体验,同事的鼓励和领导的宽容,让我坚持了下去。如果不一鼓作气往前走,那么自己永远迈不出那一步。这股魄力成为了我人生中宝贵的一笔财富。
主要工作
这半年来主要工作都集中在了angular的应用上,从做猫窝开始时的基础试运行,到后来做寄养开始的正式技术迁移,大体成果如下:
架构
核心思想是分层架构,层内独立,层间通过接口通信。
lib公共ts库,所有项目通用- net
- util
- error
- pipe
style公共样式库,所有项目通用- material-theming
- icon
- animation
- support
- plugin
- mobile
- mini-program
- pc
matrialangular material库- amap
- calendar
- card
- check
- delete
- loading
- date-range-picker
- dialog
- confirm
- success
- table
- layout
- loading
- nav
- table
- tree
- upload
fluxpc端数据层redux移动端数据层common原子业务层,微服务基础saas聚合业务层
模块化
AMD -> ESM
在angularjs时期,我们是用的AMD(requirejs)模块化方案,解决了按需加载问题,但是随着构建工具(gulp,webpack,rollup等)的不断发展,ESM逐渐成为主流。Angular 框架本身使用的TS,其模块化方案是ESM的超集。
组件化
directive -> Component
angularjs中使用的directive作为组件化的基础,而在angular中则是使用 Module,Component, Directive 来适用不用的组件化场景。
规范化
htmlhint, stylelint, eslint, tslint
使用语言对应的lint插件来规范代码风格,保证代码的可读性和一致性。
git flow
使用git flow分支管理模型,让多人协作,分支管理变得清晰有序。
跨平台
PC端,移动端,小程序使用同一套架构设计。
bin中存放了项目相关shell脚本dist编译后文件所在目录projects目录存放了所有库项目,负责独立的业务。src项目源代码
1 | ▾ bin/ |
经验教训
时间评估
细节与依赖都需要自己不断去挖掘才能考虑得详细,如果只是想当然的评估,那么事情的结果往往会变得很糟糕。
三个臭皮匠抵过一个诸葛亮
在使用新技术的过程中,经常闭门造车,导致自己走了很多弯路。以后遇到类似问题一定要多与别人讨论。
思考
这一年做了太多的东西,却思考得太少,没有理解到技术的原理,深深地陷入了码农深渊,不知道为什么这么做,为什么这样设计。每次从需求到研发,都是拿着设计图,思考实现这个东西要怎么做,时间可控不,要花多少时间,有什么风险,需要什么依赖,哪些东西可以复用等等。但是,产品初衷是什么?解决了用户什么刚需?为什么设计师要这样子设计?后端数据库怎么设计的?为什么要给这样的数据结构?这些往往难以接触,即使有机会了解,也不太愿意花时间去做。很多时候都不清除源头,就开始草草动工,只着眼于自己领域的实现,结果往往就是各种返工。在以后的研发中,一定不能把自己仅仅定位为“前端”工程师,应当从更为宏观,更为根本的角度去考虑事情。
未来
测试
目前单元测试已经有了眉目,使用angular官方提供的 karma 和 jasmine。
自动化
这一部分是目前最为薄弱的一环,当业务达到一定复杂度时,会发现越来越多的任务都是水墨功夫,流程都是一摸一样,无非相关数据有所区别,自动化工具可以帮助我们快速创建一系列相关文件和代码,提高生产效率。
异常上报与监控
异常类型
- 网络
- 接口
- 代码
- 数据
通过线上的异常监控可以及时拿到用户的异常信息,即时修复。
全栈
年初之时就想朝着全栈发展,这半年从结果上看,离自己的目标还是有一段距离,现在后端的同事们都在朝着全栈发展,我们也不能落后。如果有相关后端业务的话,希望自己还是能够主动去争取