關於react和Angular的思考

來源:互聯網
上載者:User

標籤:

      最近react在github上大有趕超 angular的趨勢,不得不說前端技術真是日新月異,比起 java c# php等老牌後端語言來說,javascript庫的生命週期正在不斷的被縮短和別挑戰,距離angular發布至今也不過幾年的時間,著實讓人感歎。

  網上一直有人試圖拿react與angular作比較,就好比拿facebook和google作比較,兩者雖然同樣知名,不過顯然不是一回事。

  就我個人的感觸而言,react無疑是一種ui組件化的解決方案,從設計思路上react和目前還是草案的webComponent顯然並不相同,說起webComponent就得提大改特改的angular2.0,雖然angular團隊聲稱,angular2 使用typescript並不是必須的,但從官網上的迅速上手看,並非如此,估計angular2.0未能獲得如angular那樣極大的反響,和不能直接使用javascript有相當的關係。尤其是typescript的模組系統,雖說文法和es6一樣,但實際上卻必須使用ts自家的包管理庫,微軟的東西就是這麼蛋疼。相較於react,webCp顯然還不能算是一種解決方案,至少在封裝ui組件上還遠遠不夠,無論是shadowdom 還是import template 以及自訂標籤,元素有了,但是卻沒有一套將其整合的方案。雖然fb的flux並不那麼讓人接受,這不是單向資料流的錯,而是相比mvc的思想而言 flux顯然蛋疼的緊。不過react卻著實是個好東西,它關於細粒度的組件理念,是真正把ui當成積木來玩了,react出來之前,我就有想法開發一個庫,能夠讓ui跟玩積木一樣還取了個名字叫toy,不過咳顯然事實證明這並非易事。

  對比angular,我覺得react正如官方所言的是一個 viewControl 而不是單純的view,對比時下熱門的vm或許我們該稱之為vc,加上state,拋開資料來源的話,react構造的每個組件都是一個,我們姑且稱為scv,state-control-view,通過狀態來控制視圖的變化,而資料來源則只負責更新狀態,避免了view和modal之間的資料流動。react將每一個組件都作為Component類的子類來看待,通過簡單的組合就能保持多樣的變化,從本質上講,state和angular的scope並沒有啥不同,都是一種狀態管理的對象,不過react區分了props和state 而scope顯然是一個混合體不僅是props還是state有時候甚至是modal。這導致了指令系統的一個根本性缺陷,那就是隨著開發的推進,越來越不能被分離,angular另外一個大問題就是依賴注入,ioc本身應該是個不錯的好東西,這也是angular出來時的一大特色,不過因為javascript本身缺少模組功能,這種依賴注入反而成了問題,對於一個大型應用,因為進度等問題,開發完成後,往往會產生龐大的js檔案群,而指令,控制器,服務的相互依賴導致了項目的可拆封性就變得很差,想要重用一個指令,最後發現會引入一大堆的服務和控制器,當然最主要的是,指令顯然是angular的bootstrap啟動之後才能用的玩意。angular剝奪了指令的渲染權,也導致了指令的使用遠不如react組件的靈活。所以angular更適合開發具有一定標準性的應用,譬如管理系統,各種管理系統,後台,前台等等。最後被人詬病的自然是angular的雙向繫結了,這玩意就是個雙刃劍,現在開來,對於react來說僅僅是省了一句setState,同樣是組件的更新權,在react中你通過this.state來改變其屬性的值並不會出發ui的重新渲染,只有調用setState方法才行,而angular的scope動一動就變一變,兩者對比,react釋放了組件更新的權利,而angular則是將其自動化,目前看來前者的做法顯然更有益。

 

關於react和Angular的思考

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.