你為什麼喜歡 React?

不太清楚react好在哪裡,希望各位路過的大腿指點一二。


都用一下試試就知道了。(逃

如果一定要說的話,我可以提一些個人看法,當然,也可能是錯的 Orz

react的優勢主要在於它的一切都是純js。Vue/Angular中,模板是會走一次編譯的。於是,react這邊你可能隨手傳過來個什麼組件塞進去就用了,而其他兩個框架就要手控地走一些神秘的編譯流程……

相對vue和angular,react要更加「乾淨」和「純粹」。我和許多朋友聊天時都談到過,好像渡過入門階段後,react要比以簡單方便著稱的vue更加容易理解。

react自身的概念和API相對來說比較少,沒有依賴收集,對象代理,模板編譯,插槽之類的東西,也不會給瀏覽器的各個API打monkey patch或者跑個自己的編譯器什麼的。最重要的,到底是什麼東西改變了框架內用來渲染的數據一目了然,幾乎全是在程序員眼皮底下跑著的,一個也漏不掉。

當然,這份純粹的代價就是有許多東西是手工的,相對來說要更麻煩,於是為了避免各種麻煩又有大牛們在研究「不那麼手工的辦法」,然後事情可能又開始變得更加複雜……(逃

PS:

1 請不要說什麼Vue也支持jsx,因為那個玩法說實話真的也很神秘……尤其是和slot組合起來時。

2 因為我是typescript腦殘粉所以我還是更愛Angular的……

3 至於Vue……窩不知道什麼是Vue喵。

4 動態組件什麼的,所有框架想做還是有辦法的。不過react的相對來說應該是最不費腦子的了?


因為React能清晰地解決問題,而且我個人最喜歡React世界施加「約束」的哲學。


我個人最喜歡的是這種組件化的設計和生命周期,然後配合 ES2015 的語法書寫比較爽。其次就是它是一種 DSL 不僅僅局限於 Web 前端,比較有想像空間,比如這種 DSL 可以描述 VR 也可以被渲染成 Canvas 用圖片的方式提升性能。。。

還有之前的 jQuery 組件,大都是 HTML 上面引入,然後直接全局去調用。但現在是 import 進來,然後作用於當前文件本身。雖然內容多了 import 會有一大堆,但起碼你知道這個東西是哪裡來的,去哪裡找,整體上是很完整的鏈路。


簡單的說,就是React可以最大的程度的發揮js的靈活性來改善HTML(模板)和CSS的僵硬手感。

比如Vue,上手會很爽,一堆現成的API可以直接用。一般對應的場景去文檔翻一翻就能找到。所以通常解決方法比較直觀明確。一開始寫起來會覺得很容易。

而React則是上手的時候難一些,因為React提供API相比Vue少得多,比如vue中的 v-if,v-for之類的指令需要自行用js實現。

但好處是,這樣更加靈活,所以寫幾次之後會覺得非常順滑。而因為API少,接下來的學習成本非常少,再也不用記API了。js怎麼搞都行,比指令要靈活和強大。

還有一點,在jsx里可以很方便的css in js,直接寫內聯樣式,一般用了組件庫之後自己寫的css會很少。媽媽再也不用擔心我為起className而糾結了。

再來說一下狀態管理的解決方案。Vue官方就提供了一個很明確的vuex。所以對於vue,一般的狀態管理方案比較單一,而且官方也沒有推薦其他的方案。畢竟對於Vue,數據綁定實現的方案使得其和很多其他狀態管理工具搭配起來顯得不是很搭,合適的只有vuex。對於非同步狀態的管理,vuex給出的方案也很明確。

而對於React,卻有很多狀態管理類庫。從Redux中衍生出很多非同步解決方案,如redux-thunk, redux-promise , redux-observable , redux-saga 等。同時也有dva,mobx, mirror等框架。Rxjs搭配React也很容易。這樣儘管造成了較高的學習成本,但是也更有意思,更有助於技術的進步不是么。

總結

在React中,js可以通吃模板、邏輯和樣式,而對於vue,則通常要分開成三部分,三個部分要用指令來連接。Vue寫起來總離不開一堆API和指令。而React寫久了,就是全能js的無限組合。更能滿足所謂的『創造欲』吧。


實現了前端的組件化,開發不要太方便。


react的思想是函數式編程在JavaScript中的一大實現,我喜歡它的理由很簡單,使用react,可以讓我在開發和維護過程中,提高了效率,縮短了任務完成時間,然後,可以不浪費時間加班。

那些用再優秀的框架,還要每天加班到深夜的同學們,你們真是糟蹋了 「前端工程」,糟蹋了 「React」這麼優秀的工程化框架。

以前沒有React,你說工作忙,我信了,現在用了react,你還說工作忙,那你學習新框架的意義是什麼?


react就像那純潔的少女,讓你一見鍾情,剛剛接觸她的時候感覺世界就應該這樣乾脆利索純真無邪,但是當你們開始真正過日子的時候,你才知道生活不止有甜蜜,還要處理家庭瑣事還要養家糊口,至於react不好意思她只負責美麗,而且你也絕對不希望她干其它的事,不然她就不是你心目中那個姣美的女孩了。有這樣的老婆今生何求呀?突然想到一句話:ng是媽,react是老婆,vue是小保姆。大家認為我對中間一句話的理解到位不?


超級喜歡React

1.組件化是各個框架做得最好的

數據驅動視圖大家都在做,但是無疑React做得最優秀和最優雅。所有的數據,都可以被React翻譯成DOM節點,事件,文字,甚至是注釋。

組件最高境界就是對外完全屏蔽內部細節,外部調用永遠是這個幾個出口,熱拔插無痛。

2.生命周期的強大和頂層api的設計

生命周期函數的設計能讓你從組件生成,掛載,更新,完全的掌控一個組件,許多意料之外的功能都可以使用生命周期函數來實現。

頂層api如,clonecomponent,createcomponent,createprotal等,是實實在在的從開發者角度去幫助開發者少掉頭髮,放開雙手去擼管。

React本身的api和概念極少,從項目之初到現在也不過是增加了幾個而已。聲明試的書寫代碼,效率極高以及不用太操心框架版本更新。

3.生態圈極佳,高手多

大大小小ui庫,css解決方案幾十甚至幾百個,什麼不爽你用什麼。

狀態管理庫,滿足你項目的各個階段的需求,甚至包括狀態管理庫都有自己的生態,redux thunk,saga,promise…

對於維護大項目,優勢極大

5.美中不足一:官方只開發react

雖然官方只開發react本身就是其優點,但是這就造成了生態圈的混亂(或者說是百花齊放),在選擇技術棧的時候很容易選擇困難癌。

6.美中不足二:體積太大

當然,隨著框架發展,代碼一定一定會膨脹起來。為了兼顧開發體驗,性能和版本兼容,react寫了很多「其他」代碼去保護,兼容。

對於一些想要小體積,快速瀏覽的網站來說,這不太是好消息。

7.美中不足三:單向數據流

單向數據流的設定使得react在處理表單的時候還是挺麻煩的。做表單就是雙向綁定的過程,React在這方面有些許蛋疼,但是也還好,大家解決方案都還是有(新手就別吐槽了,直接拿antd用就好,反正也不用你自己封裝

8.美中不足但是也是優點(對於個人而言

我們有了熱兵器以後,漸漸會忘記冷兵器,開了自動擋的車就不熟悉手動擋。

React封裝程度太高,dom操作完全會被遺忘,這一部分知識如果不去讀源碼,光光學習react本身使用,沒人會知道,這就導致了當一個框架死去,另一個框架誕生的時候,大批人會進入恐慌,對於熟悉dom操作的人來說,這也只是方便他們操作dom的工具罷了。

react封裝層度高到甚至連css都學不好……


React給我最大的感覺是:每個組件、以及數據流都能夠回答人生的三大問題:

  1. 你是誰
  2. 從哪兒來
  3. 到哪兒去

非常清晰且純粹,沒有魔法,便於理解。


抽象層次低,封裝薄,方便搞事情


因為簡單啊!


因為react全方位地擁抱了javascript ,挖掘了javascript 作為編程語言的潛在的巨大能力。


沒有特別的感覺,也許因為通過 React 發現了很多民科可以算吧…


純函數,高階組件


函數式 狀態機

所有的思想只用這條公式就行了

View = f(data)


我最先嘗試的是angular1,後來放棄了。為什麼?angular1個人覺得太複雜了,就好比學習一門全新的語言一樣。然而框架的目的是解決問題,而不是把問題弄複雜。angular後面的版本我沒有嘗試,不好評價。

後來我嘗試了vue2.0。誠然,這個框架很優秀,它的很多實現很巧妙,比如計算屬性。由於框架作者是國人,因此文檔對國人很友好。而且各種需求都能滿足,自帶的許多功能都很強大。由於最先開始採用的是直接引入vue文件的方法使用,後來發現,定義一個component,如果使用render的話,簡直就是噩夢,層層嵌套(現在已經沒了,因為vue有了單文件組件,其實也是一種jsx的實現吧,用起來挺爽的)。

然後我接觸到了react,耳目一新,api就那麼幾個,而且es6用起來不要太爽(安卓程序員過來的懸念)。最主要的是,jsx用起來好方便啊。

其實並沒有特別鍾情一款框架,框架是為了解決需求的,而不是為了炫耀或者站隊的。硬要說,其實我更喜歡原生js


分頁阅读: 1 2