Angular和React哪個更有前景?
Angular2.0和1.X相比感覺就是倆框架;之前花功夫學習的Angularjs1.X版本也沒法遷移2.0;我想問全新學習angular2.0還是學習react?哪個在以後移動端會比較佔優?
從開發上說,它們各自有各自的思想,都要學,現在么也越來越趨同了。
開源做得好,那麼一定會有長期的發展與維護。一般大公司會維護內部版本和開源版本,而開源有非常多的『社區需求』。那麼得有非常明確的解決業務痛點大方向,和有包容社區的小方向。從這個角度,這兩個庫都非常積極。都可以 follow 下去。
從發展上說,開源社區的投入是大公司必要的投入,頂級公司 create 標準,二流公司 follow 標準。從這個角度 FB 將 react 不是作為前端的開發框架,而是作為『終端』開發標準。
React 背後是 FB,FB 是一家依靠依靠社交起家的公司。把握社交入口,是他們的首要關注的重點,包括對 Whatsapp 的收購對移動社交上的控制,現在 F8 conf 上大力宣傳下一代人機交互應用在社交上。
React 在 FB 非常多的應用上跑。然而還不止,這次 F8 上 的 react 出現在 anywhere,並不是 web 的 react,而是標準的 react dsl。真正做到了 learn once, write anywhere。目的也很明確,降低開發者的學習成本,擁抱未來 FB 的開放平台,集合更多二線互聯網公司,一起打造 FB 生態。(這裡的生態不僅指今天的業務,未來 FB 一定會在終端硬體上有很多投入)。
Angular 背後是 Google,Google 是搜索起身,基建不用說了,後來的 Android 和 Chrome 的發展讓這家公司布局更為深遠。他們的標準建設,在大數據的建設和終端上的建設比起 FB 來說高出一頭。因此 FB 反倒非常希望在標準上能與 google 抗衡。
2016 Google io 上 google 發布了 Google Home 和 Daydream,顯然 google 也是想要在未來控制終端,在技術上呢,主要是 android 還有 PWA,android 是本家的,而 PWA 是與使用技術無關的。google 今天移動的生態非常成功,但它們從不局限開發者用什麼,而是更多的包容心態。 我只是推測 angular 並不會成為 google 的未來布局,其它語言也是。
因此,看未來我更看好 react,另外我覺得 google 的設備支持 react 也不是什麼不可能的事。
看下 Facebook 開發者大會什麼地方用到 react,看下 Google 開發者大會什麼地方用到 angular,對比一下兩家公司肯花多少錢到自己的框架上邊。框架做大到了產品,有什麼問題投錢投人一般都是能解決的,拼的就是投入了。
React,與目前 Angular X 相比:
- 小而美;
- 成熟,穩定,社區活躍;
- SSR(服務端渲染 NEXT.js 之流)、跨端(React Native)跨端開發相對成熟;
- 工作機會要比 Angular X 多。
純個人看法,React更有前景。
光是Facebook自家已經有300000(我沒多寫個零吧)多個組件了,Facebook很認真地在使用React,自己吃自己的狗食。
然而Google現有產品並沒有多少使用Angular的吧,也可能我孤陋寡聞,但真沒聽說什麼Google產品用Angular實現。
React也更像一個開放式框架,可以適用於任何應用場景;Angular則像是VisualStudio一樣是個快速開發環境,開發模式化CRUD應用挺方便。
還是純個人觀點,Angular用TypeScript和微軟搞在一起了,作為微軟前員工,我覺得Angular這是在瞎搞啊!
補充:因為Facebook在React中加了一個很晦澀的專利聲明,讓人拿不準是不是哪天Facebook會拿React找別人麻煩,和Facebook有競爭關係的公司就很猶豫了。有Google員工公開說很懊惱,因為法律原因,他們不能在項目中使用React;但可從沒有Facebook員工表示懊惱不能用Angular:-)ng1中如果你沒有大量做dom操作,遷移到ng2還是很容易的,都是套路,遷移幾個頁面之後就基本上都是體力活兒了。最妙的是:在遷移過程中你的應用可以照常在線上跑,裡面一部分是ng1代碼一部分是ng2的,其商業價值有多大請問問你們老闆。
論前景當然是 「一次學習,到處編寫」 更有前景。
又不是多難的東西,都學唄,這樣還可以看場景使用。過兩年哪個還活著,你自然就全力轉到這個平台了。
不過以我前端的尿性,過兩年,可能這兩個框架都過時了。你還得學習新的框架。個人覺得框架這種東西不存在誰比誰更有前景,真正的前景是個人的能力,有能力的人用什麼框架都不會有太大問題。
react
以前還會覺得react也就是一個庫
但是隨著Facebook和社區的持續開發,生態的發展,我發現react很可能就是終極的前端開發方式到現在一個jsx標籤就可以代表了所有,全都歸納進js的體系,高度組件化,高度抽象,這套思維放到哪裡都適用,哪怕是AR VR也無需切換思維
以後瀏覽器,VR AR都集成react也不是不可能。
相比react,angular實在沒有任何顯著的優勢論前景,在你方唱罷我登場的 Web 世界,HTML/CSS/JS 才是永恆的前景。
以下搬運自我的另一篇回答:React這樣整個全家桶真的好么?這麼碎片化會是以後前端框架的趨勢么? - 知乎
少談些主義,多研究些問題。不要犯選擇困難症,MVVM框架都很相似,咸甜豆漿而已,在解決最核心的問題之後,各有各的小缺點及小優點而已。
核心問題就是:Web 組件化
R、V、A三種框架學習起來無外乎下面一種通用思路:
1. 語法
- 不使用構建工具的最簡單DEMO
- 正常寫法
- 注意點
2. 組件
- 組件初始化
- 組件間通信
- 組件間訪問鏈
- 傳遞組件
- 生命周期
- 訪問原生DOM
3. 某些框架特色
- JSX
- VDOM
- diff
- 各框架的響應式方案
- 指令
- 過濾器
- 插件
- 表單元素控制的區別(Model / 受控表單)
- ng的一堆別的概念
4. 事件
- 與原生區別
- 使用
- 訪問原生事件
5. 路由
- 嵌套路由
- 含參路由
- 默認路由
- 重定向
- 匹配規則
6. 工程化
- 構建工具
- 語言版本
- 類型檢查
- 單元測試
7. http工具
- CURD
- REST
8. 數據流
- 狀態管理的基本思路
- 單向數據流與雙向綁定的區分
9. HTML
- 模板語法
- JSX語法
10. 基礎業務
- TODO
- 表單
- 事件
- 動畫
- CSS3動畫
- js動畫
- HTTP事務
- 條件渲染
- 列表渲染
- 離線處理
- 等等
11. 組件化開發
- 原則
- 包裝已有生態包(如 echarts)
- CSS方案選擇
- 設計模式
- 禁忌
- 組件測試
- 基礎組件類型及實現(antd、elements、MaterialDesign)
12. 服務端渲染
- 原理
- 同步狀態/狀態恢復
- 做法
13. 非同步流程管理
- Promise
- Rx.js
14. 跨端方案
- 客戶端 Electron
- 移動端原生應用方案
這幾個框架要解決的問題就是這些,方案不同而已,對比著看,沒準一下會了三個呢(逃…
另,對於新手來說先上 @尤雨溪 的Vue,能更快地理清組件化開發的思路,避免在周邊問題上糾纏不清。(模板你肯定用過吧、指令應該接觸過吧,這些是 Vue 學習的成本。反觀 RA,JSX 不一定用過、麻煩的受控表單、ts 不一定用過、什麼 DI、Provider 啥的也是新概念,這成本就多了很多了...然而這些跟 web 組件化都沒什麼關係...屬於框架的特色,先別折騰他們)。
對於國內找工作來講 Vue、React 都比 A 家好找。國外 React、A系1、2好找。
對於跨移動端開發,RN 成熟一些。
如果你做過非 js 的後端、那就 A 家。
不管怎樣,就算平常用react開發我還是推薦有時間弄弄Angular + Typescript。
它既很好地解決了開發效率問題,又充分解決了可維護性問題。
前些日子在一個不大重要的移動端項目上試了Angular,感覺還不錯。因為項目不大,所以僅用自帶的service就搞定了數據層,且非常清晰,沒有那麼多層的穿插,改一個東西涉及的文件會比react帶redux一類外部狀態管理的項目少一點。
最近在鼓搗angular + typescript +meteor,開發久了特別煩寫不必要的代碼,能省則省,儘可能的提升業務開發效率。
我一直覺得,前端開發的價值所在,就是在提升業務開發效率和儘可能實現需求的過程中,把響應速度和質量的優勢體現到產品迭代甚至企業競爭層面。
能搶在競爭對手前把新功能給上了,體驗還很流暢,就是好的技術選型。作為一個前端,能對企業做的價值貢獻也就這麼多了。
如果你在做項目,會用哪個就用哪個。學習的話,感覺Angular2比較好,把1.x里的坑都填上了,組件式開發邏輯清晰,可以使用TypeScript,類似Java的語法如果有面向對象程序開發經驗上手很容易。Angular2性能上進步很大,貌似是使用了瀏覽器多線程渲染,官方說速度提升了5倍。支持伺服器渲染,在載入頁面時不用等到所有腳本文件載入完後渲染,直接使用伺服器渲染好的頁面,看上去提高了載入速度。Angular和React區別就是,Angular是一個大而全的MV*框架,Web開發中經常用到的組件都有,比如:非同步網路請求載入、數據雙向綁定......這些用的很爽的功能,React只是View層,加上Flux才算一個框架,可以和各種第三方庫配合使用,適合快速開發。可能是用慣了Angular,感覺React的數據單向流動模式很麻煩。這兩個框架都支持NativeApp,各有優缺點,這個爭論會持續很長時間,個人感覺Angular2比較有前景 。
個人比較支持react,因為jsx寫起來真的不錯啊(逃
討論vue,react,an這些框架誰更好有什麼意義呢,不是根據需要去選擇,根據喜好去選擇框架,我一直覺得,與其說學哪個好,到時候還是用到什麼要學什麼,前兩個框架有經驗,an沒用過,說下自己項目的經驗,這個月做一些項目也是看了很多別的大大小小的包,很多東西真的不是那麼適合自己的項目,有些是用的挺好,但是到頭來還是有些點不太滿意,比如用koa-body 做koa的post請求中間件文件上傳處理,到後面發現它上傳文件先把數據流存到了系統臨時文件夾下,給我一個File讓我自己挪到需要的地方,但是我不喜歡這樣啊,看了很多別的,從async-busboy 到busboy, 前者是封裝了後者,後面也是結合async-body自己改了下代碼。再比如我用到的富文本編輯器medium-edito的時候,這個編輯器很優秀,但是他的代碼擴展功能是多一個pre標籤去套代碼,但是我希望是這樣&
&&
&,但是發現這種情況下去擴展api種多button有個問題,就是在編輯過程中回車時候帶出太多冗餘的p標籤,最後沒辦法,把代碼弄到本地項目里改,因為提issue也沒那麼快,更何況這種需求也算無理取鬧,後面改下源碼解決方案也是很簡單啊。這種事情每天都在發生,但是不這樣去學習,很多框架真的不能百分百符合自己要求,有些包的文檔就是點到為止,有些甚至不看源碼不知道這是幹什麼用的。與其說那個更有優勢,還是基礎重要,不管到什麼時候,能快速上手解決問題才是重點。不妨都看下,react,vue還是很不錯的。花不了多少時間,但是附帶品很多,什麼redux,vuex,router。總之全家桶不能少。
angular的雙向綁定是其最大亮點,而react太難,所以個人支持angular
雖然是AngularJS使用者,但個人覺得React可能更有前景,原因如下:
* 從使用情況的統計結果來看,React一直穩居三大框架榜首。
* React既是輕量級解決方案,基於它的Redux也可以搭建大型項目。
* React Native讓它支持APP視圖層開發。
* React的國內外資料豐富,Angular2 的官方文檔遲遲不更新。
* Angular2對於AngularJS屬於破壞性更新,浪費的原有的優勢。
* React更國際化。