angular 和 React 想選擇一個學習,哪個比較好?
為什麼不能兩個都學啊,這又不是互斥的,都學學吧。
學這種東西,要多思考他為什麼要這麼干,優勢在哪裡,缺點在哪裡,有哪些比較別緻的實現細節,適合什麼業務場景,如果使用,需要添加一些什麼樣的周邊等等首先謝邀,可惜偶不懂這方面的。但我覺得學習東西,不應該去區分吧,應該根據你自己的需求去定。如果你有足夠的精力,你可以一起學,哪果你精力不夠多,你應該選擇你最感興趣,而且最急需的。拙見,請勿狂噴
如果單從學習的角度的話,我建議學習Angular 2
angular/angular · GitHub
一個時代的到來與另一個時代的過去,在angular上體現的比較淋漓。全新的angular2,在糅合大量ES6新特性的基礎上結合了AtScript ( typescript ), 相信在移動端的性能與開發效率也會提高。另外舊版的angular有時就不是你不想學就不能不學的,如果公司有其他項目用到了,需要你接手維護,懂一些總比什麼都不懂來得好,上手快,上司也更賞識你。
最後react作為View層的庫,結合Flux的理念更加強大,另外加上react native的流行,你不學難道不覺得跟不上潮流了嗎?
總結,感覺流行框架的選擇,建議是多方了解,深入單個,所以先都入門一下看看到底哪個更適合自己吧。
最近準備做個react-like的特殊框架,歡迎follow me on Github, ^.^lightningtgc (gctang) · GitHubangular我是挺喜歡,不過確實很龐大很全,移動端確實在效率還有待提高,看了react又是另一個概念,正在嘗試新的項目中
angular 2選1 一定要學這個,寫了幾天之後雖然沒有特別熟 但是這種開發模式真的很厲害。而react 拋開實現原理 就單純功能上來說 angular已包含。
都學也不是問題,互相比較之後可能收穫更多。我在維護 React 中文社區的論壇跟微博, 所以你懂的... React.
平心而論 Angular 在 GitHub star 數量 37k React 20k, 差距還是不小
我個人排斥 Angular 的原因是它對簡單的問題給出複雜的解決方案, 並不認為 Angular 不好.選擇框架我最在乎的編程模型怎樣, Angular 是 MVVM, React 是 Flux(或者 MVC).我理解 MVVM 適合的場景應該是數據跟界面匹配程度高的場合, 比如表單..React 的好處是給出的方案強大而且極為清晰, 沒有幾個概念在裡邊
React 的編寫思路幾乎都是 JavaScript 邏輯跟 HTML 標籤操作, 很容易上手定義的模塊, 有什麼生命周期, 怎樣組合, 怎樣優化性能, 也很好理解
不足的地方是 React 沒有很好覆蓋數據(Model)層面架構設計, 會帶來很多困惑很同意徐飛的觀點, 這個完全要看具體的場景分析利弊.
而且樓主自己有多少的學習能力跟時間投入, 也需要一起考慮一下.補充一下, Angular 2 相對前一個版本改變很大... 學之前明確一下框架這種東西,聽再厲害的大牛說都不如自己親自試一試,花費的時間絕對值得。
暑期實習還沒開始,師兄先讓我看tastejs/todomvc · GitHub,是用數十種框架和庫實現的todo應用。我太愚鈍,才看了四種(Ampersand、Backbone、Angular、React),但是已經折服於前人簡潔而NB的思想。框架既然是人設計的,難免都有其優勢,有其不足。優劣勢別人給你講,很難講通透的。何況看看花的時間又不多,少打兩把dota什麼都有了不是?至於之後想真正拿來用,還是要深入了解,這個我不敢多言。------------4.27日更新---------------我覺得選框架大體上有三點要看:- 看上層抽象是否合理。
- 看底層實現是否優雅。
- 如 @徐飛 所說,看其周邊生態是否發達。
------------4.30日更新---------------
(這兩天看框架看的頭大,簡要總結一下,順便梳理一下頭緒,可能會有很多理解不到位的地方,希望各位斧正)大概看了看React實現的todo,讓我又發現了一個新的思路(這個框架瘋狂湧現的年代,各種新鮮的思維真是在不斷刷新我的三觀0-0)。結合之前對angular的理解大概說說它們兩個的特點吧:首先我們看看所謂的前端MV*到底是個什麼樣基本思想:1. View-Model兩者之間通過數據綁定來實現同步更新,有的框架是雙向綁定(Angular),有的是單向流(React),React官網是這麼講的:DATA FLOW
React implements one-way reactive data flow which reduces boilerplate and is easier to reason about than traditional data binding.
2. 數據綁定本質是擁有一個watch方法在輪詢state(狀態),如果狀態有變化,那麼則更新對應的View或者Model。這個過程在某些框架的某些部分(Angular的HTML部分)下被藏起來了,在某些框架(React、Backbone、Ampersand)下卻暴露在外面。
3. 關於View層,這個不同框架差別很大。在Angular中,可以認為把View層(嚴格說來是VM層)打散成了兩部分:a)一部分是HTML文件中;b)一部分是用來方便做Components的Directive部分中。而React其實就我來看是一個大的View層庫,幾乎體會不到Model的存在,這一點在官網首頁也有提及:
JUST THE UI
Lots of people use React as the V in MVC. Since React makes no assumptions about the rest of your technology stack, it"s easy to try it out on a small feature in an existing project.
這裡已經說明的非常清楚了,React並不限制你的除去View層以外的技術棧選擇;所以才會有這個問題:怎麼用backbone+react架構前端? - 前端開發。@Tom K (不知道為什麼@ 不到)的回答里也講了,可能Facebook還沒有開源相關的MC部分。
1.Angular- Angular大概還是想要讓HTML、CSS以及JS分離的,但是分離的一點都不徹底,比上(Ampersand)不足,比下(React)有餘。
- 你打開Angular的HTML文檔,會發現很多邏輯包含在裡面,比如常見的有判斷用什麼class,以及filter這些。當應用逐漸迭代變得越來越大的時候,HTML文件就會變的非常之難讀。(雖然Angular提供把HTML打散成不同Template的解決方案,但是個人並不喜歡這種組件化方案。)
- 當更改一個函數或者class名稱的時候,你需要重新打開HTML在一堆標籤中尋找你的目標。
- 消除了Backbone、Ampersand框架中的顯式綁定,直接進行數據雙向綁定。
- 降低了入門的門檻,新手會發現在做一些小Demo的時候Angular非常之優雅。但是應用逐漸變得複雜需要使用Directive的時候,會發現又有一道大山(尼瑪,說好的優雅的數據綁定呢,我為什麼還要手動$watch!),再到後面學到Compiler,才逐漸看到一個big picture,很不利於有一個整體理解。
- 而且相比於隱式數據綁定,顯式聲明有一個好處,這樣只要一看Model和Route對整個項目就有一定把握了,等於是一個活文檔。
2.React
阮一峰老師剛剛給出一個React的Tutorial:React 入門實例教程。個人感覺還挺適合初學者掌握大致的模式的。------------5.15日更新---------------最近正在期末考試,感覺壓力山大。想了想,還是不寫React了,理解太淺薄,貼一個傳送門:2014 年末有哪些比較火的 Web 開發技術? - 前端開發,裡面有各公司的前端架構師級人物的看法,還是非常有價值的。-------------------------
為什麼收藏一直漲,沒有贊呢0-0 新人求個贊react 其實大項目不大推薦。因為react的確 編法很 funky, 但是有一點最大的問題,不能保證javascript(負責邏輯的工程師) 和 htmlcss (負責設計,外觀的工程師)的職能分離,也就是說react 很大一部分事情做的是用javascript去dynamic生成了dom, 這部分代碼在你的javascript文件的邏輯里。而 angular 都是javacript的邏輯跟html裡面的tag的內容有對照比如javascript 裡面$scope.apple, 到了 html 裡面是{{apple}},你管style sheet的工程師或者懂一點的designer 根本不用到你的javascript里去看就能幹他的活了。
如果是你一個人,或者幾個skill set都很全,不按職能分工 的 developer一起寫,那麼react 還是很酷的。
=======更新答案======如何工程化開發大型angular2項目(上篇)(分享自知乎網)http://zhuanlan.zhihu.com/p/23808621====================淺談一下從3月份到現在用angular2的體驗。alpha版到rc.7,之間變動之大。router系統重構好幾版,component組件編寫語法也是變了好幾次。上頭追新,作死應用到生產環境,應用越做越大,打包出來JS都快2、3M。導致客戶普遍抱怨首屏載入慢。還好後來在Nginx伺服器上做了優化,還有angular提供了預編譯技術,先渲染HTML。速度提升60%。這裡也不是抱怨angular小組技術變動大,畢竟還是研發階段。我想提一點是,追求新技術是值得鼓勵的,但是不要把還在研發的技術應用在主線產品中,而是用在一些內部系統中。不然真是血的教訓。當然要說說,angular這次變革式創新出了2代。優勢有1.學習成本降低,因為有中文版文檔www. angular.cn,在也不用聽新同學抱怨英文看不懂。基本看幾天就能上手。會angular2,看vue基本無壓力,反過來也行得通。2.技術實現成本降低,用angular1實現組件共用,用2輕鬆實現。現在項目里已經有很多通用組件了。3.react,vue的redux,angular2也有,ngrx技術。
4.對於選擇恐懼症的盆友,angular2真是一站式服務。
5.聽說react可以開發native app,不好意思angular2和nativescript也可以開發原生app。 忘了說一句,angular2還可以開發react native。(自行上GitHub搜索angular2 react native).6.最六的是支持Rx.JS。7.人生苦短,快用angular2吧。PS:哪有蘿蔔坑,準備挪坑,私聊2015-10-01 更新:自己打臉,我已經跳槽 Redux + React 了!
===
我在 AngularJS、React + Flux 這些開發方式上,看見以前 Flex + PureMVC 的影子。
不論是組件式開發、事件驅動的單向資料流,再加上最近這個新聞 如何評論瀏覽器最新的 WebAssembly 位元組碼技術? - Google Chrome。讓我更加確定 HTML5 是在借鑒 Flash 的技術走以前的老路,只是一個有開源大佬 Google, Facebook 撐腰,一個是封閉的 Adobe。。。所以我目前的關注度是 AngularJS 2.0 or Polymer &> React + Flux = AngularJS 1.x
接下來的主流框架大概會越來越像 Flex 的 MXML + AS3 + (SWF, SWC, CSS) 之於 HTML + ES6 + CSS3,等到 HTML 的 WebComponents 和 ES6 逐漸穩定之後,應該就會來解決麻煩的動畫&特效的開發方式了。我個人建議是你先學學angularjs,等發現媽的html頁面已經亂成一鍋粥的時候,再學React就會頓感輕鬆。少林武僧就是先綁沙袋,去掉以後就輕功水上漂了。
我覺得最重要的是你的開發場景:如果是偏企業應用,Angular沒說的;偏互聯網應用,React。
我是angularjs黑。angularjs簡直就是一坨屎。
我也是一直都猶豫的,直到收到這個使用Angular有加成的禮物。
各用半個小時 嘗試著寫點東西 看看哪個順手 就來哪個
你是你技能的擁有者 不要被技能綁架
祝好~
今天剛才在udacity上學框架,我想說的是不要太執著於這些玩意,或者特定哪個框架。但我實在建議你學好學的框架,容易上手的框架。因為實質上jquery的一些庫是用於簡化JavaScript的寫法的,不做組織代碼的工作。但確實提高了編程效率。另一方面,你不學框架,代碼就跟麵條一樣都是散的,框架是用於組織代碼,增加代碼的可維護性。就是把代碼變成跟八股文一樣。這樣利於理解和維護。框架之間大同小異,基本概念mvvc,數據雙向綁定都相同。選一個輕量的,簡單的,易上手的,其實哪個都無所謂。真正去哪個公司在用特定的框架,用API熟練細節。因為僅僅是API不同而已。從硬體來說,就是用戶手冊不同而已。你學硬體不是從單片機學起么?難道執著於英特爾和ARM整半天?
2014年研究了一年Ionic和AngularJS,感覺AngularJS功能全面,上手難度不大,適合一般的團隊大規模開發用。2015年到2016年中斷斷續續研究了React和React Native,感覺RN引入了很多新概念,使用了組件化編程, Redux使用了函數式編程思想,學習曲線比較高,適合技術水平比較高的團隊。
目前不建議學ng1。如果想快速上手項目,用vue.js。如果只是學習累積,就進react生態圈。
這種難道不是都涉獵一遍嗎?當然有些人說「學什麼框架,用jquery之類的庫就夠了balabala..」,別聽他扯淡。angular react等庫/框架的思想和jquery不是一套,依然用jquery的思想做開發那永遠不能進步。
angular實用。只用1.x就好。react暫時不行。可關注。
推薦閱讀:
※如何評價Node.js的新fork ayo.js?
※nodejs寫的小工具,如何使用命令行直接執行?而不是先調用js文件,具體情況往下看
※js很奇怪的問題,關於加法運算的問題?
※如何評價前端應用框架 dva?
TAG:前端開發 | CSS | JavaScript | AngularJS | React |