你們?yōu)槭裁磼仐壛薺Query而轉(zhuǎn)向angularJS等框架?
我13年開始入坑前端,經(jīng)歷了原生,jquery,angular及到現(xiàn)在的vue,來談談這一路的心路歷程吧。
在13年時,我最開始使用原生去寫頁面交互,取元素,加事件,寫動畫,還有ie6、7的兼容性,現(xiàn)在的前端是無法明白當時的苦。
但當遇到了jquery,就像悟空遇到了金箍棒,突然讓你覺得,一切都是如此簡單,突然讓你覺得你千斤的背上卸去了一半重量的輕松。不用你再去為了獲取一個元素寫幾行代碼,只為了兼容某些瀏覽器,不用你再去為了一個動畫焦頭難額。它有強大無比的dom選擇器,讓你隨心所欲的操作界面上的任何元素,包括改變樣式,賦值,取值,乃至添加元素,讓你爽上天,即使在現(xiàn)在這個框架無比強大的年代,它依然非常好用,另外,jquery相關的各種各樣的插件會讓你在開發(fā)中事半功倍。
但是呢,時代在進步,需求也在改變,隨著大型網(wǎng)站越來越多,尤其是移動互聯(lián)網(wǎng)的出現(xiàn),單頁面應用也就不斷增多。所以,應用的復雜程度,代碼的復雜程度都不斷增加,此時,jquery就會有很大的缺陷,具體在哪,我就拿我上一個公司的項目說下。
我們那項目是一個單頁面應用的web版,是一個企業(yè)應用,有差不多十幾個功能。在我去公司是,架構已經(jīng)形成,使用的jquery+ejs。沒有使用任何其他框架,在開始功能很少的時候,沒有發(fā)覺有太大的問題,但是隨著需求增加,每個功能的代碼量也就開始增加,可能僅僅一個簡單的功能,都需要將近兩千的代碼量,而且代碼主要用來干什么呢?用來獲取數(shù)據(jù),提交數(shù)據(jù),將數(shù)據(jù)寫入頁面,及數(shù)據(jù)變化后,需要動態(tài)的生成html,然后在添加到頁面。而且這所有的代碼,復用性很低。到前兩年,問題就相當突出,整個網(wǎng)站,代碼總量超過了10萬行,合并壓縮后js文件都差不多一兩兆,這還不是最主要的,最主要是當需要改一個小小的需求時,你會發(fā)覺幾萬行代碼你都不想去看它,而且一個不注意就會導致意料不到的bug,此時,突然覺得,一切都難以控制。
隨后,我們在新的功能里使用了當時比較火的,社區(qū)環(huán)境較好的angular1,使用了雙向綁定,因為我們是企業(yè)應用系統(tǒng),數(shù)據(jù)相關很多,所以減少了很多的取數(shù)據(jù),寫數(shù)據(jù)的代碼,而且使用angular指令去組件化頁面,提高頁面復用性。使用service和filter去提高某些方法的復用性。這樣,也就減少了很大部分的代碼量,提高了很多的開發(fā)效率。
但是,由于我們本來是單頁面應用,公司是創(chuàng)業(yè)公司,無法進行重構,所以在后面功能,每次都需要重新重構一個angular項目,而且,angular的學習成本和項目復雜度很高,一個小功能都是一個新的anglar項目。
隨后,vue的出現(xiàn),它輕量級,雙向綁定,較低的學習成本,組件化的開發(fā)模式這些都優(yōu)于angular1,因此,從此后項目,就開始使用vue及進行其組件化管理。
對于使用什么框架,需要根據(jù)項目需求和公司技術人員,公司狀況而定。更重要的是,不管是使用什么框架,最終目的都是為了提高開發(fā)效率,開發(fā)質(zhì)量,提高項目的可維護性。