之前用的技术
团队之前采用的是ext.js + SpringMVC
前后端统一的开发方式。
为什么会用这种开发方式呢?前端为什么采用Extjs我曾就这个问题询问了我的主管,得到了如下回复:
- 当时团队都是后端技术为主
- 没有专门的UI
- 当时(几年前)的Extjs算是比较流行的JavaScript框架
这么来说还是比较合情合理的,对于当时的团队来说确实是一个最优的选择。公司的主要产品是中后台管理系统,前端主要用作数据展示以及少部分的管理,用Extjs确实是不错的选择,理由如下:
- 面向对象编程,Ext严格遵循面向对象的思想
- 面向JavaScript,只需编写JavaScript就可以创建丰富的UI组件,无需操心CSS和HTML
- 统一的UI风格,Extjs提供多套主题可选
在团队当时的情况下,Extjs的这些优点解决了不少痛点,所以也就一直用到现在
为什么要换技术?
技术的发展日新月异,前端也是如此。业务需求的变化,旧的技术框架也显得越来越乏力。团队的人员也一直在变化,到我接手项目之后,面对迭代了几年的代码决定进行重构,理由如下
- 代码过于冗余,出了bug往往要各种调试才能发现问题
- 性能问题
- 缺少必要的前端开发规范
- 稍微复杂一点的业务需求变动往往要改动很多地方
以上这些原因促成了我提出重构的建议,最后一点尤为明显,代码过于耦合造成一旦改动一个地方往往会带出一大片修改,费时费力还不讨好。重构的建议很快得到通过,接下来就是确定业务需求、技术选型、项目规范制定和开发了。
确定需求后,就是技术选型了,这里要先分析为什么不用Extjs,我总结如下原因:
- 笨重,Ext包含了一系列的JavaScript API和主题,整个框架几百kb大小,就算经过gzip压缩后也依然很庞大
- 修改样式的麻烦,整体封装太好,想要自己定制化UI组件很难
- 收费,虽然有开源的版本,但很多新特性的用不了
- 较低的社区活跃度,国内的开发者社区活跃度很低,遇到问题没法集思广益
- 很难组合网上大量的开源项目
- 招人困难
Ext的优点同时也带来了缺点,团队的结构今非昔比,业务结构的多变需要灵活的框架,高扩展、灵活成了项目的主要目标。最后两点尤为重要,也是经过讨论后决定放弃Extjs的原因。业务变化飞快,如果没法整合现有的开源项目,那么进度将会大大减慢;而现在的新人都不太愿意(市场决定)使用旧项目,那么与时俱进的团队显然更有吸引力
准备启用的技术
经过上面的一系列思考,最终决定选择Vue来作为接下来前端重构的技术。为什么选择Vue,有以下几点考虑
- 现今最流行的框架之一,这表示生态社区很活跃
- 渐进式框架,vue的核心思想之一
- 轻量,官方说法经过gzip压缩后只有20kb左右
以上三点很符合当前的业务需求,也解决了团队的痛点。当前最流行的前端框架之一,所带来的是火热的社区及丰富的周边生态,好处是当需要用到一些轮子时不用自己造,大部分都有现成的;遇到问题时,百度/谷歌一下,基本都有解决的思路,而且话题的时间线非常靠前。渐进式的概念我认为是我选择Vue很重要的原因,Vue严格来讲只是一个库,核心只关注视图层,但Vue的开发理念就是以核心库作为底层基石,根据自己项目需要不断地添砖加瓦,尽量保证打包出来的项目没有过多冗余的代码,保证项目的灵活性和轻量。
未来的思考
重构项目的同时也带给我更多的思考,虽然没有经历过项目从0到1的过程,但起码尝试着重新来构建这个1。在项目重构的同时也招到了可靠的新同事来一起开发,果然大家都还是想做些有意思的事情。在未来肯定还会碰到新的问题,技术的更迭永不停息,那怎么办?打好自身基础,积累可靠的经验方能遇到问题解决问题。
网友评论