背景
2017年4月公司组织结构变动,这个祖传的代码要交接到我这里,因为是公司最赚钱的产品之一,我怀着忐忑和无比敬畏的心情就开始了我的交接之旅,真的是没想到,惊喜成为了惊吓。
首先在前端无比飞速发展的今天,你能想到吗?我们的项目还存在于后端的java工程中,这意味着我修改一行任意的js、css或者html都是要后端同学,重新编译打包,重新发布,这个过程大概要持续半个小时。
该项目是从2011年公司成立的时候就在做的,那个时候jQuery还是很流行的,后来angularjs的出现,让这些开发者也跃跃欲试,所以我们的项目可谓真的是大量的jQuery代码夹杂这少量的angularjs来组成。
最开始接手从简单的 issue 开始处理,每天都好像能获得一些代价与惊喜,我改了一行看似没什么副作用的代码,谁知道,另外一个地方就出错了,每天被各种bug缠绕,终于理解为什么这个项目之前迭代速度如此之慢?同时也不能够理解为什么如此重要的项目不好好的重构一番。
在2017年的12月底,我实在是受不了了,开发体验差的实在难以忍受,一直向上反馈,当时的想法是:接下来不重构还继续维护这个,我立马辞职。终于取得了一些时间和人力,可以去重构这个项目,兴奋之情溢于言表。
重构前的项目架构:
jQuery + AngularJs1.2.19 + gulp
项目存在问题:
- 前后端代码同一仓库,难以管理
- 代码组织杂乱,查找代码非常难,基本全局搜索
- 技术使用混乱,可能是当时angular不成熟
- 基本没有组件话
- 用户体验差,维护成本搞,开发效率慢
- 少有人愿意维护,新加入人员学习成本高
- 多个模块混在一起
重构目标
前后端分离,前端可单独测试、发布
拆分前端模块,将混在一起的5个模块分离
引入公司提供的组件,提高开发效率
减少维护成本,提高用户体验
去掉对jQuery技术的使用
编写开发文档,统一编码风格,降低新人加入成本
重构计划
代码按照模块进行拆分,每个模块独立打包发布,适配前端Jenkins系统(已完成,稳步运行于线上)
前端画布流程图的重构(已完成,稳步运行线上)
节点开发重构 (正在进行中)
页面主框架重构 (开发中)
新系统融合,性能优化 (未开始)
加入nodejs层,适配不合理的api接口(未开始)
重构人员
架构设计都是由我们的架构师同学来做,在这个过程中,我主要是写代码,然后负责和产品、开发经理、测试同学沟通需求,人力资源,上线计划,灰度发布后的调研,反馈,所以写这篇总结还是有些担忧,很怕有的地方会不到位。