前不久,Nicole Sullivan提出了一個(gè)話題,就是:為什么人們決定使用框架?
對于這個(gè)問題,看似簡單,但你能回答出來的卻只有那么一兩點(diǎn)。但是我想你可能自己也對自己的回答不太滿意吧?不管你怎么想的,我們都應(yīng)該正視這個(gè)問題。還要對為什么使用框架有一個(gè)全方位的了解。
為什么用?
1.可以集中精力在業(yè)務(wù)的實(shí)現(xiàn),而不用把過多的精力和人力用在代碼功能邏輯的實(shí)現(xiàn)上。
2.可以避免由我們自己寫帶來的很多bug。
3.可以暫時(shí)快速的解決掉某一問題,以待以后的進(jìn)一步解決。
4.可以避免寫技術(shù)文檔和介紹功能實(shí)現(xiàn)給團(tuán)隊(duì)成員的問題。
5.可以極大的縮短開發(fā)的周期。
6.因?yàn)槌墒斓目蚣鼙旧砭褪峭晟频慕鉀Q方案。一般它們都有自己的生態(tài)系統(tǒng),有眾多技術(shù)達(dá)人參與。這樣我們在使用中,不僅有完善的技術(shù)文檔可以隨時(shí)查看,遇到問題也有地方問,最重要的一點(diǎn)是不用自己設(shè)計(jì)、整理、驗(yàn)證技術(shù)方案了,你只需要深入了解它的生態(tài)系統(tǒng)即可。
7.避免了bikeshedding現(xiàn)象(它的意思是說:總在一些沒有意義的問題上爭論,而有意忽視哪些真正需要解決的難點(diǎn)/痛點(diǎn)問題)的出現(xiàn)。
為什么不用
1.不用的其中一個(gè)原因,就是用框架的成本太高。夸張一點(diǎn)說,可能就這一點(diǎn)就就蓋過了它所有的優(yōu)點(diǎn),但要用一個(gè)框架一定要考慮它的成本。
2.對于一個(gè)團(tuán)隊(duì)來說,首先需要專門招聘一些精通這個(gè)框架的開發(fā)人員(前端/后端)和維護(hù)人員,再加之沒有一個(gè)框架是萬能的,如果下一個(gè)項(xiàng)目使用另一個(gè)框架是否意味著另招一批開發(fā)人員,這樣的代價(jià)不是所有的企業(yè)都能承受;
3.對個(gè)人來說,學(xué)習(xí)一個(gè)框架需要花費(fèi)大量的時(shí)間和精力,你不僅要學(xué)習(xí)框架本身,你還要了解它的生態(tài)系統(tǒng),關(guān)注它的各方面咨詢,尤其是版本更新,它往往帶有對過去框架存在問題的改進(jìn),如果升級版就可以移除自己解決原框架存在問題而寫的補(bǔ)丁(這些補(bǔ)丁有大有小,也可能引入了其他依賴),這樣就帶來另一個(gè)問題,項(xiàng)目的遷移問題,像angular一樣它現(xiàn)在的版本已經(jīng)到了9.x,但現(xiàn)在有相當(dāng)一部分還在用著1.x,angualr雖好,但是它也給開發(fā)人員帶來了巨大麻煩,學(xué)習(xí)曲線太陡是一方面,要了解的東西太多(知識面的廣度)是另一個(gè)重要方面。當(dāng)然一直使用一個(gè)框架,并進(jìn)行深度挖掘的技術(shù)團(tuán)隊(duì),受益良多,但這樣的團(tuán)隊(duì)又有多少。
當(dāng)然,除了成本,我們還要考慮項(xiàng)目的規(guī)模和復(fù)雜度問題。不能一個(gè)就五六個(gè)簡單頁面的項(xiàng)目,你就引入一個(gè)框架吧。此外使用一個(gè)框架,往往會使用它配套的部件,如:引入vue,一些用慣了vue-router,vuex,在項(xiàng)目中自然而然的引入這些東西。這也是開發(fā)這些框架的核心團(tuán)隊(duì)為什么盡量的縮減核心框架功能的原因,而把一些次要功能或三級功能獨(dú)立出來。這些由主框架、功能庫、主題庫、工具庫、以及輔助開發(fā)的工具庫等組成的集合,就是該框架的生態(tài)系統(tǒng)。
對于開發(fā)人員來說,要保持理智。國內(nèi)的一些基層開發(fā)人員普遍存在不理智的現(xiàn)象,跟風(fēng)現(xiàn)象比較嚴(yán)重。應(yīng)該注意這些:
1.技術(shù)比較火,并不代表技術(shù)方案的完美。
2.好的技術(shù)框架我不一定都要會,但要有一個(gè)框架我十分精通。
3.別人會的,我不一定要非得精通,但我會的要保證別人一定要不如我。
4.學(xué)習(xí)某一個(gè)技術(shù)不是一兩天或者一兩個(gè)月的事兒,技術(shù)都是積累來的。
5.不要把大神神話,它們也是從小白成長起來的。
6.要保持對技術(shù)的熱度,而不是蹭技術(shù)的熱度。
結(jié)束語
其實(shí),不管你是否使用框架,抑或你對框架持有什么樣的態(tài)度,你都要明白你選擇的出發(fā)點(diǎn)兒是什么或者說動(dòng)機(jī)是什么。
來自:緣自世界