只要有人的地方就有恩怨,有恩怨就會有江湖,人就是江湖。— 金庸
這段時間前端最熱鬧的事莫過於阿当老師事件 ,關於一片關於前端2016的考察,文中主要觀點是,建議新人關於前端入門更多的是注重的是基礎,寫發jquery和css等,不要去追什麼reactjs和vuejs等新潮的技術,結果引來vuejs作者和同行中許多的各種爭議。
在知乎上,觀點幾乎是一邊倒的,這也無可厚非,這個開倒車的行為有點過失,邏輯存在 Major Conflict。
在這個爭議中,引起我的思考的,不是技術的對比,或者雙方論點論據的優越,而是對於前端的認知,一個心理的行為認知。
對於非科班出身的,當初進入編程行,莫過於前端與php的入門,這也是至今說php是最好語言的一個表述,因為當時入門的最容易的就是php+mysql+jquery這一套東西。對於當時只有pc的年代,另一套是java系列。
隨著手機ios和 andirod 以及多端的出現,必然出現更多複雜情況,慢慢出現前後端分離以應對,但是分離後,前端該怎樣了?以往權力是後端控制前端,只是當前端view層面,因為習慣MVC了,但是前端分離出來,在前端不斷完成自我人格的時候,必然同現要權的行為,從angular1開始,就體驗到在views拿到了control和data flow的權力,而且directive的創新概念影響後代的reactjs和vuejs以及ember等主流框架,可以說angular1有著開時代的影響,就如當年的yahoo的Mootools和Prototype。
至於現在前端主流reactjs和vuejs以及jquery之間的區別是什麼,我簡單解析下:
jquery可以說影響前端比較深遠的一個框架,是框架嗎?其實不是,準確是javascript的工具集,在這之前還有Mootools和Prototype等優勢工具集。 為什麼說jquery影響深遠,因為他將native javascript簡單歸納成易用易維護的dom操作,插件plugin易extend和開發,event以及交互上,以及樣式控制。對於當時來說,也存在很大爭議,對於寫習慣原生js的人來,就如今天之爭。
而對於現在初學者來說,怎麼學好reactjs和vuejs?一般入門者都喜歡站隊,其實不必然。因為reactjs和vuejs相似又各不同。
對於reactjs來說,可以說和jquery一樣相當影響,簡單來說,reactjs就如上文所說,現在前端框架是真是框架並不是工作集,例如:
獨立的人格。就如lifecircle生命周期的概念,生命周期就如人一樣,出生,成年,死亡和回收大自然,所以有componentWillMount, componentDidMount,componentWillUnmount 等生命周期階段.
生物信息流。對於state props來說,可以簡單講信息流,就是人一樣的身高,體重,以及dna,fingerprint一樣,就如人的生物信息流,那麼這些信息流會改變或不變嗎?其實不能說去量化這麼信息,reactjs只是記錄這個過程,就如你出生體重到死亡成灰都有一記錄值,就如性別一樣,你一樣可以改,但在更換性別前時就有一個記錄是什麼條件下改變的。
社交記錄。至於redux,又是一個什麼概念了?其實簡單來說,各個component之間社交行為紀錄,在沒有 redux,reactjs 會將props和state的變化各自記下,就如A借錢到B,B又把錢C,C要還錢還B,B再還給A,但有 redux時就可以,C還錢給B, B可設置action在收到C錢時dispatch直接還給A。而且 redux的數據是怎麼記錄的?,你可以想像就如圖書館,你每看一本書,就要去借入記一次,歸來記一次,就如會計帳記錄,衝正也是記錄,所有行為可以trace。
自我反復思考糾錯。至於virtrual dom又是什麼概念呢?因為javascript 的actural dom是一次渲染出來,以前開發時修過只是通過人工fresh才可看到,而virtrual dom只是在真正渲染前用diff算提交一个path的去更新view ,就如一个自我糾錯的行为一样。
以上也是vuejs2改版之後也具有的特性。
兩者有什麼不同?可以講都是人,可以講男女之別。
reactjs 就像男生一樣,想法多,得想到方方面面,但風氣就如農村的重男輕女,習慣繼承皇位。
vuejs 就像女生一樣,嬌小,思維直觀,template javascript style, 每個 componet 像 derivative 可自義聲明,有點女孩子富養的感覺。對於習慣MVC思維有一個好的幫助。
那 angular 4呢 angular 2開始 typescript 寫,入門門檻更高,也採用新時代特性,習慣 flowtype和強類型的前端有了一個更好的選擇。
江湖門派之爭,總有好勝之爭,這是好事。但想成為真正強者,還是知各家所長所短,不然到真正華山論劍之時,不學無術者自然是給淘汰。我的建議,潛力去研究,學其所長。