Re: [討論] 初探 reactjs 疑問

看板Ajax作者 (芸)時間9年前 (2016/03/07 11:23), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串2/2 (看更多)
※ 引述《cyclone350 (老子我最神)》之銘言: : 大家好 : 最近常常聽到 reactjs,聽說很不錯用很多優點之類的,然後執行速度很快 : 所以今天簡單看一下 reactjs 的介紹說明及 Hello World : 看完後有幾個疑問讓我很困擾 : 1. reactjs 速度很快... : 從下面兩個地方看了說明 : http://www.slideshare.net/JustinWu13/j-queryreact-js : http://andyyou.logdown.com/posts/234130-reactjs-reactjs-decrypt : 主要理解是 reactjs 有 virtual dom,他會把一系列的 dom 更新先存在 virtual dom : , : 最後由 reactjs 統一更新到 dom 底下。 : 但是,我對 angularjs 理解也是有差不多的概念,我們異動一般的 js 物件 : 當 js 物件產生變化後,angularjs 將這些異動部分更新到 dom (所謂的$apply) : 既然 angularjs 跟 reactjs 都一樣是統一幫使用這將異動值更新到 dom : 那為什麼 reactjs 會比較快? : 是 reactjs 更新 dom 時有進行最佳化嗎? 如果是這樣,那 angularjs 的 $apply : 有做最佳化的話,是否就可跟 reactjs 一樣? : 想了這些之後,直接去 google,看到一篇文章 : http://blog.500tech.com/is-reactjs-fast/ : 嗯? 文章大意是說是在 reactjs conf 2015 時用的範例比較不那麼公平 : 事實上只要簡單修改 angularjs demo 的程式碼,就會發現他們速度其實差不了多少 : 看了這篇文章後更懷疑了 reactjs 是比較快的說法了... http://www.alloyteam.com/2015/10/react-virtual-analysis-of-the-dom/ 可以參考這篇,因為我並沒有真的去實踐vitual dom。所以沒辦法跟你說angular 跟react兩個算法的不同。 但react確實有最佳化對DOM的操作,主要是依賴diff去算怎樣更新最快。 我上面貼的文章有說,react並沒有說他會比原生操作快, 他只是保證他在大部分的情況下有不錯的效能。 : 2. reactjs 很簡單很好學 : 就我的理解,reactjs 很像是 angularjs 的 directive... : reactjs 有用 jsx,這樣的混搭的語法糖對熟悉 js 的人也許很好用 : 但真的好學嗎? 這也許有點主觀... 但是我真的沒感覺可以很簡單上手 React一開始的學習曲線很高,有點類似Vim的感覺,後面習慣就會覺得很簡單。 JSX其實一點也不好學,一開始我還有打算純用React.createElement來寫.... : 3. trace code 方便嗎? : 因為比起撰寫程式,我們更常閱讀程式 : 所以能夠快速地看懂程式碼並且找到 bug 是很重要的 : 這樣請問各位有用過 reactjs 的前輩了 : 相較於 jQuery 與 angularjs, reactjs 的閱讀性如何? React大勝,無庸置疑,JQ跟angular太容易寫髒了。 React拋棄了html,將code全部塞到js了,易於組件化跟分割。 : 4. 開發時程 : 相較於其他 js framework,reactjs 開發時程是花更多時間還是更少時間? (開發時 : 間含測試程式) : 因為本人沒實際用過,也沒特別深入了解相關機制 : 想請問各位前輩用 reactjs 的心得 : 還是我在觀念的理解上有誤? 也歡迎指證 開發速度取決你的熟悉度。 之所以要使用React是因為他提倡了兩個觀念,UI跟Data的分離,UI的OO化。 將UI跟Data分離讓你易於寫Unit test,因為Data本身是一個純數據的存在很好測試。 而你在寫React的過程中,你會感覺到React其實就是很像是在實踐OO,一樣要封裝、繼承 這是在以前html你不太會去做的。 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 118.163.30.31 ※ 文章網址: https://www.ptt.cc/bbs/Ajax/M.1457320982.A.5AC.html

03/08 00:44, , 1F
感謝回答
03/08 00:44, 1F
文章代碼(AID): #1MtFGMMi (Ajax)
討論串 (同標題文章)
文章代碼(AID): #1MtFGMMi (Ajax)