之前用的技術(shù)
團(tuán)隊(duì)之前采用的是ext.js + SpringMVC
前后端統(tǒng)一的開(kāi)發(fā)方式。
為什么會(huì)用這種開(kāi)發(fā)方式呢?前端為什么采用Extjs我曾就這個(gè)問(wèn)題詢問(wèn)了我的主管,得到了如下回復(fù):
- 當(dāng)時(shí)團(tuán)隊(duì)都是后端技術(shù)為主
- 沒(méi)有專門(mén)的UI
- 當(dāng)時(shí)(幾年前)的Extjs算是比較流行的JavaScript框架
這么來(lái)說(shuō)還是比較合情合理的,對(duì)于當(dāng)時(shí)的團(tuán)隊(duì)來(lái)說(shuō)確實(shí)是一個(gè)最優(yōu)的選擇。公司的主要產(chǎn)品是中后臺(tái)管理系統(tǒng)钠怯,前端主要用作數(shù)據(jù)展示以及少部分的管理,用Extjs確實(shí)是不錯(cuò)的選擇曙聂,理由如下:
- 面向?qū)ο缶幊袒薮叮珽xt嚴(yán)格遵循面向?qū)ο蟮乃枷?/li>
- 面向JavaScript,只需編寫(xiě)JavaScript就可以創(chuàng)建豐富的UI組件宁脊,無(wú)需操心CSS和HTML
- 統(tǒng)一的UI風(fēng)格断国,Extjs提供多套主題可選
在團(tuán)隊(duì)當(dāng)時(shí)的情況下,Extjs的這些優(yōu)點(diǎn)解決了不少痛點(diǎn)榆苞,所以也就一直用到現(xiàn)在
為什么要換技術(shù)稳衬?
技術(shù)的發(fā)展日新月異,前端也是如此坐漏。業(yè)務(wù)需求的變化薄疚,舊的技術(shù)框架也顯得越來(lái)越乏力。團(tuán)隊(duì)的人員也一直在變化赊琳,到我接手項(xiàng)目之后街夭,面對(duì)迭代了幾年的代碼決定進(jìn)行重構(gòu),理由如下
- 代碼過(guò)于冗余躏筏,出了bug往往要各種調(diào)試才能發(fā)現(xiàn)問(wèn)題
- 性能問(wèn)題
- 缺少必要的前端開(kāi)發(fā)規(guī)范
- 稍微復(fù)雜一點(diǎn)的業(yè)務(wù)需求變動(dòng)往往要改動(dòng)很多地方
以上這些原因促成了我提出重構(gòu)的建議板丽,最后一點(diǎn)尤為明顯,代碼過(guò)于耦合造成一旦改動(dòng)一個(gè)地方往往會(huì)帶出一大片修改趁尼,費(fèi)時(shí)費(fèi)力還不討好埃碱。重構(gòu)的建議很快得到通過(guò)碴卧,接下來(lái)就是確定業(yè)務(wù)需求、技術(shù)選型乃正、項(xiàng)目規(guī)范制定和開(kāi)發(fā)了。
確定需求后婶博,就是技術(shù)選型了瓮具,這里要先分析為什么不用Extjs,我總結(jié)如下原因:
- 笨重凡人,Ext包含了一系列的JavaScript API和主題名党,整個(gè)框架幾百kb大小,就算經(jīng)過(guò)gzip壓縮后也依然很龐大
- 修改樣式的麻煩挠轴,整體封裝太好传睹,想要自己定制化UI組件很難
- 收費(fèi),雖然有開(kāi)源的版本岸晦,但很多新特性的用不了
- 較低的社區(qū)活躍度欧啤,國(guó)內(nèi)的開(kāi)發(fā)者社區(qū)活躍度很低,遇到問(wèn)題沒(méi)法集思廣益
- 很難組合網(wǎng)上大量的開(kāi)源項(xiàng)目
- 招人困難
Ext的優(yōu)點(diǎn)同時(shí)也帶來(lái)了缺點(diǎn)启上,團(tuán)隊(duì)的結(jié)構(gòu)今非昔比邢隧,業(yè)務(wù)結(jié)構(gòu)的多變需要靈活的框架,高擴(kuò)展冈在、靈活成了項(xiàng)目的主要目標(biāo)倒慧。最后兩點(diǎn)尤為重要,也是經(jīng)過(guò)討論后決定放棄Extjs的原因包券。業(yè)務(wù)變化飛快纫谅,如果沒(méi)法整合現(xiàn)有的開(kāi)源項(xiàng)目,那么進(jìn)度將會(huì)大大減慢溅固;而現(xiàn)在的新人都不太愿意(市場(chǎng)決定)使用舊項(xiàng)目付秕,那么與時(shí)俱進(jìn)的團(tuán)隊(duì)顯然更有吸引力
準(zhǔn)備啟用的技術(shù)
經(jīng)過(guò)上面的一系列思考,最終決定選擇Vue來(lái)作為接下來(lái)前端重構(gòu)的技術(shù)发魄。為什么選擇Vue盹牧,有以下幾點(diǎn)考慮
- 現(xiàn)今最流行的框架之一,這表示生態(tài)社區(qū)很活躍
- 漸進(jìn)式框架励幼,vue的核心思想之一
- 輕量汰寓,官方說(shuō)法經(jīng)過(guò)gzip壓縮后只有20kb左右
以上三點(diǎn)很符合當(dāng)前的業(yè)務(wù)需求,也解決了團(tuán)隊(duì)的痛點(diǎn)苹粟。當(dāng)前最流行的前端框架之一有滑,所帶來(lái)的是火熱的社區(qū)及豐富的周邊生態(tài),好處是當(dāng)需要用到一些輪子時(shí)不用自己造嵌削,大部分都有現(xiàn)成的毛好;遇到問(wèn)題時(shí)望艺,百度/谷歌一下,基本都有解決的思路肌访,而且話題的時(shí)間線非痴夷靠前。漸進(jìn)式的概念我認(rèn)為是我選擇Vue很重要的原因吼驶,Vue嚴(yán)格來(lái)講只是一個(gè)庫(kù)惩激,核心只關(guān)注視圖層,但Vue的開(kāi)發(fā)理念就是以核心庫(kù)作為底層基石蟹演,根據(jù)自己項(xiàng)目需要不斷地添磚加瓦风钻,盡量保證打包出來(lái)的項(xiàng)目沒(méi)有過(guò)多冗余的代碼,保證項(xiàng)目的靈活性和輕量酒请。
未來(lái)的思考
重構(gòu)項(xiàng)目的同時(shí)也帶給我更多的思考骡技,雖然沒(méi)有經(jīng)歷過(guò)項(xiàng)目從0到1的過(guò)程,但起碼嘗試著重新來(lái)構(gòu)建這個(gè)1羞反。在項(xiàng)目重構(gòu)的同時(shí)也招到了可靠的新同事來(lái)一起開(kāi)發(fā)布朦,果然大家都還是想做些有意思的事情。在未來(lái)肯定還會(huì)碰到新的問(wèn)題昼窗,技術(shù)的更迭永不停息喝滞,那怎么辦?打好自身基礎(chǔ)膏秫,積累可靠的經(jīng)驗(yàn)方能遇到問(wèn)題解決問(wèn)題右遭。