前端项目重构总结(1) - 前世由来

背景

2017年4月公司组织结构变动,这个祖传的代码要交接到我这里,因为是公司最赚钱的产品之一,我怀着忐忑和无比敬畏的心情就开始了我的交接之旅,真的是没想到,惊喜成为了惊吓。

首先在前端无比飞速发展的今天,你能想到吗?我们的项目还存在于后端的java工程中,这意味着我修改一行任意的js、css或者html都是要后端同学,重新编译打包,重新发布,这个过程大概要持续半个小时。

该项目是从2011年公司成立的时候就在做的,那个时候jQuery还是很流行的,后来angularjs的出现,让这些开发者也跃跃欲试,所以我们的项目可谓真的是大量的jQuery代码夹杂这少量的angularjs来组成。

最开始接手从简单的 issue 开始处理,每天都好像能获得一些代价与惊喜,我改了一行看似没什么副作用的代码,谁知道,另外一个地方就出错了,每天被各种bug缠绕,终于理解为什么这个项目之前迭代速度如此之慢?同时也不能够理解为什么如此重要的项目不好好的重构一番。

在2017年的12月底,我实在是受不了了,开发体验差的实在难以忍受,一直向上反馈,当时的想法是:接下来不重构还继续维护这个,我立马辞职。终于取得了一些时间和人力,可以去重构这个项目,兴奋之情溢于言表。

重构前的项目架构:

jQuery + AngularJs1.2.19 + gulp

项目存在问题:

  1. 前后端代码同一仓库,难以管理
  2. 代码组织杂乱,查找代码非常难,基本全局搜索
  3. 技术使用混乱,可能是当时angular不成熟
  4. 基本没有组件话
  5. 用户体验差,维护成本搞,开发效率慢
  6. 少有人愿意维护,新加入人员学习成本高
  7. 多个模块混在一起

重构目标

前后端分离,前端可单独测试、发布
拆分前端模块,将混在一起的5个模块分离
引入公司提供的组件,提高开发效率
减少维护成本,提高用户体验
去掉对jQuery技术的使用
编写开发文档,统一编码风格,降低新人加入成本

重构计划

代码按照模块进行拆分,每个模块独立打包发布,适配前端Jenkins系统(已完成,稳步运行于线上)
前端画布流程图的重构(已完成,稳步运行线上)
节点开发重构 (正在进行中)
页面主框架重构 (开发中)
新系统融合,性能优化 (未开始)
加入nodejs层,适配不合理的api接口(未开始)

重构人员

架构设计都是由我们的架构师同学来做,在这个过程中,我主要是写代码,然后负责和产品、开发经理、测试同学沟通需求,人力资源,上线计划,灰度发布后的调研,反馈,所以写这篇总结还是有些担忧,很怕有的地方会不到位。

杨芳<br>前端一枚<br>背包客,热爱旅行,喜欢摄影<br>轻微洁癖,强迫症,电话恐惧症患者!