Vue和React的使用場景和深度有何不同?
想寫一個新項目,目前在選擇vue和react遇到些困擾。
個人以前用過knockout和angular,看到vue的時候就十分的喜歡。對使用風格和作者都很有好感...(畢竟顏值高...)現在資源也很多,包括項目搭建和demo。最近剛看到react,了解不多.初步看了下文章。個人理解:react對於數據邏輯方面需要操心的更少了,可以直接全量賦值.通過虛擬dom,進行最優的局部更新dom這一點很吸引人,省去前端對數據邏輯的判斷和操作。但是模版樣式和邏輯分離不是很好.以及動畫問題(來自vue作者)vue全量賦值感覺會是重寫全部dom元素(根據原理猜測),所以需要對數據需要額外的邏輯代碼。另外的好處是貌似對動畫支持很好,以及demo
感覺從易用方面和項目搭建方面應該是vue佔上風。react的整體賦值很有吸引力,但是react沒有雙向綁定這個沒有研究過,不太清楚帶來的問題,然後就是性能問題。以上是個人粗淺的理解.請大家指教。==================================================2015-10-31 更新現在vue已經1.0發布了,更好的性能以及周邊產品更多了。vue-loader、router,貌似現在還在開發chome的調試工具,各個都是真愛啊!現在再讓我總結的話:vue的優點在於易上手的項目搭建,優秀的組件化,配合router等大型項目也可以輕易拿下。react目前我感覺優勢在於native相關,未來大有可玩。單純的web項目的話,學習成本相對vue來說還是很高的,react只是view還需要配合其他類flux的框架開發。但是用來儲配技能react絕對第一選擇。
謝邀,也感謝你對 Vue 的欣賞。
首先,其實 Vue 也完全可以全量賦值的,唯一需要的小優化就是給 v-repeat 列表一個 track-by 屬性,提示一下如何判斷兩個對象是否是同一份數據。如果是沒有複雜交互的列表,可以直接 track-by="$index" 原地復用 DOM 元素。
合理使用 track-by 的情況下,Vue 甚至可以比 React 更快(這裡渲染的是 100 * 5 的數據表,每一幀都是全量新數據賦值):
dbmon (Vue)dbmon (react)在超大量數據的首屏渲染速度上,React 有一定優勢,因為 Vue 的渲染機制啟動時候要做的工作比較多,而且 React 支持服務端渲染。
需要指出的一點:React 的 Virtual DOM 也不是不需要優化的。複雜的應用里你有兩個選擇 1. 手動添加 shouldComponentUpdate 來避免不需要的 vdom re-render;2. Components 儘可能都用 pureRenderMixin,然後採用 Flux 結構 + Immutable.js。其實也不是那麼簡單的。相比之下,Vue 由於採用依賴追蹤,默認就是優化狀態:你動了多少數據,就觸發多少更新,不多也不少。
說起 Flux 架構,FB 提供的標準實現非常繁瑣,所以社區的各種造輪子版本層出不窮,目前其實還沒有找到一個公認的最佳實踐,而且大部分新 Flux 實現都引入了很多函數式概念,你如果對函數式編程不熟悉,光搞清楚那些概念就得花很久。
如果你真的理解了 Flux,你又會發現其實 Vue 也是可以應用 Flux 架構的。比如 optimizely/nuclear-js · GitHub 是一個 Flux 變種,他們就是同時把這個東西用在了 React 和 Vue 上面。
再談談開發風格的偏好:React 推薦的做法是 JSX + inline style,也就是把 HTML 和 CSS 全都整進 JavaScript 了。Vue 的默認 API 是以簡單易上手為目標,但是進階之後推薦的是使用 webpack + vue-loader 的單文件組件格式:
然後扯一扯模板 vs. JSX 的問題。JSX 在邏輯表達能力上雖然完爆模板,但是很容易寫出凌亂的 render 函數,不如模板看起來一目了然。當然這裡也有個人偏好的問題。
React 的社區/組件生態比 Vue 大很多,這個是很顯然的。不過說實話我很少見到現成的第三方組件完全符合我的要求。
最後,使用場景上來說:React 配合嚴格的 Flux 架構,適合超大規模多人協作的複雜項目。理論上 Vue 配合類似架構也可以勝任這樣的用例,但缺少類似 Flux 這樣的官方架構。小快靈的項目上,Vue 和 React 的選擇更多是開發風格的偏好。對於需要對 DOM 進行很多自定義操作的項目,Vue 的靈活性優於 React。
---
更新:
樓下有些回答說 Vue 的核心是 MVVM 雙向綁定,然後就直接跳躍到了『不適合持續工程迭代』的結論。且不說這樣的跳躍太草率,這樣的看法本身對於雙向綁定的理解也是有偏差的。表單的雙向綁定,說到底不過是 (value 的單向綁定 + onChange 事件偵聽)的一個語法糖,你如果不想用 v-model,像 React 那樣處理也是完全可以的。另一方面,組件間的數據傳遞,Vue 默認是單向的,和 React 一樣。
React 本身並不存在所謂的『單向數據流』,這完全是 Flux 引入的概念。其核心還是在於避免組件的 local state,強調把 state 抽取出來進行集中的管理。沒有 Flux 的情況下 React 一樣會有狀態難以管理的問題,其根源在於在哪裡存放和管理 state,和雙向綁定沒有本質聯繫。那難道 Vue 就不能這樣管理狀態嗎?當然是可以的,Vue 現在可以通過 egoist/revue · GitHub 和 Redux 進行配合,也可以用 Vue 專屬的狀態管理架構 Vuex: vuejs/vuex · GitHub ,『單向數據流』並沒有 React 吹的那麼神,直接因為這一點就覺得 Vue 不適合工程迭代,完全站不住腳。Vue js 是目前我所接觸過的,唯一能舒舒服服地用 webcomponent 概念做開發的框架。
出 react 入 vue 的來說下。
vue2 出來以後,不管在易用性,功能,性能,文檔,配套設施,我都更傾向 vue,特別是 vue 的文檔,寫得如行雲流水般,看得令人賞心悅目。
react 由於沒有雙向綁定,在處理一些需要複雜表單邏輯的時候,很不方便,不管是官方推薦的 flux 架構,以及官方文檔中提提到自己實現雙向綁定的方案,並沒有很好解決這個問題,到頭來,都難以需要自己操作 dom。我覺使用 vue 則會省心很多。
選擇一個框架,一個重要因素是社區成熟度,vue 可能目前在社區這方面不夠 react 火熱,但也處於上升階段,朝氣蓬勃!特別是國內,中文資料跟進非常及時。
強烈推薦題主用 vue!先佔個坑,正在幫朋友的一個項目以及自己手頭的一個項目整體遷移react,vue在我目前的項目中已經有中大型項目在用,後續做一下回答。先簡單說一下這兩者的相似以及不同吧:
相似:其實都是model driven思想的嚴格踐行者,以及通過component拆分完整整個系統的分治不同:
1.react基本上已經有一套遵循Flux的完整開發方案(基本上也就這一套大家默認的方式),而vue雖然有配合vuex使用,但是還有其他很多組織方式來解決,所以並不算是有固定模式,相對靈活很多,當然這個你可以看作是優勢,也可以看作是不足
2.react社區還是要比vue大很多3.react在view層侵入性還是要比vue大很多的4.首次渲染性能,對於大量數據來說react還是比vue有優勢5.對於component的寫法,react偏向於all in js,語法學習上需要下一些功夫,而vue配合vue-loader,其實在很大程度上讓你不會覺得陌生--這不就是web component么。後續繼續補充。
另外上面有人回答不適合持續工程迭代這點我可以直接持反對態度了,因為在我手頭現在的一個算是中大型項目裡面,配合vue+vuex是完全解決了這部分內容的,其實還是看你怎麼使用角度,也就是我剛才不同裡面說的第一點。雙向綁定的話……react倒是也有的:Two-Way Binding Helpers,只不過不提倡罷了。個人使用的經驗是對於特定的情景,編輯器神馬的,還是局部的雙向綁定容易一些。。。
沒用過vue,不好做評價,有機會去嘗試一下。
說說我用react的感受。前期上手難,難在哪裡?
1、反人類的寫法(共識)2、設計的技術棧太多,入手茫然。3、初學react那會,還是年初的時候,那時候教程明顯不足,現在好多了,很多坑都已經有了答案可尋。後期維護容易。
1、單純的react,很難做到工程化的管理,結合了redux使用之後,就形成了一個規範,有跡可循了。2、框架搭好後,開發起來非常輕鬆,雖然操作表單的數據的時候,沒有雙向綁定這麼好用,但是多寫幾行代碼並不會讓我不開心。我對vue的感覺
1、前幾天曾在vue社區發帖問了下vue的工程化技術棧是什麼,一百多人瀏覽,沒有一個人回答,有點小失望,討論這麼不熱烈啊,我只是想知道vue工程化的技術棧實踐,不要什麼todoList的小demo。2、至少是國人開發出來的好東西,思路上還是能讓本國人能夠輕鬆點理解。3大馬車你追我趕,這是很好的現象,說明前端界很活躍,能增加更多的就業需求啊。
我只能說: React的插件生態完善點
VDOM 還是綁定其實從應用層開發者來說不重要,要關注的其實是模版vs函數式render的區別
總的來說我會覺得 vue 更符合傳統 web 開發的思路,模版樣式與邏輯分離,在某些場景是非常合適的,比如媒體行業與大量的運營活動頁面,這三塊內容當然拆開的好,內容側懂 HTML就好,頁面重構側不需要關注太多的 js ,邏輯側專註給各類標籤或組件提供特性支持就好。
但對有些web 應用而言卻不是這樣的, 裡面有可能有大量的交互與狀態管理,層次結構有可能也很深,樣式可能與邏輯有著千絲萬縷的關係(比如動畫與手勢),使用模版的思路就會有大量的綁定,這是很難維護的。所以react 跳出來說,模版與邏輯的分離未必分離了關注點,而很可能只是分離了技術,然後嘗試著用 js 解決一切,做到視圖組件的高內聚。
具體的技術選型其實取決於很多因素,但我覺得生態還真不一定就是其主要因素,具體要解決的問題以及團隊的原本技術構成也許更加重要。這兩天正好在團隊討論這2個類庫的選型,一些個人看法(直接copy過來微調了一下):
vue
* mvvm架構的核心及價值是數據的雙向綁定,引入mvvm框架應該要看下業務上是否有這類需求。目前看商家端的後台業務是比較合適的。
* vue 不適合持續工程迭代,是因為數據是可以在view 和 model進行雙向流動的,數據雙向流動會帶來一個問題是:當工程規模比較大時,如果處理不當,前端的行為將變得難以預測,進而就難以調試和維護了* 對於簡單頁面、小型應用,vue開發則非常高效,只需要處理好view,然後傳入data就可以了。
* vue的模塊化更接近於web component的實現,同時與xtemplate(天貓內部nodejs模板渲染語言)的結合有更多的可能性。* vue源碼相對簡單,同時也有內部團隊(手淘團隊)支撐,後續業務上的調整也會更得心應手。react
* react 其實也出來一段時間了,在國內真正火起來則藉助於react native。而vue如果與weex(手淘正在開發的,並計劃16年中旬開源)配合是否也會引爆熱點?值得期待一下
vue與react的選擇,可以理解為:
* 雙向綁定及單向數據流的選擇。
* web component 與 virtual dom 的選擇。* 技術上來說,沒有過不去的坎,坑踩多幾次也就不會再犯了。所以這兩種類庫的選擇,實際應該是哪個更符合未來趨勢及標準,從kissy的升級可看出,每次發版都是在趨於標準。* 而最終未來趨勢及標準則表現在使用人群、框架影響力及社區成熟度。最後,一點建議:
* 小團隊,用react。更成熟的生態環境及社區氛圍。* 個人,用vue。練練手,為後續大項目做技術儲備。* 牛人,看喜好!vue.js 和其他框架(React)的對比
對比其它框架
Angular
選擇 Vue 而不選擇 Angular,有下面幾個原因,當然不是對每個人都適合:
- 在 API 與設計兩方面上 Vue.js 都比 Angular 簡單得多,因此你可以快速地掌握它的全部特性並投入開發。
- Vue.js 是一個更加靈活開放的解決方案。它允許你以希望的方式組織應用程序,而不是任何時候都必須遵循 Angular 制定的規則。它僅僅是一個視圖層,所以你可以將它嵌入一個現有頁面而不一定要做成一個龐大的單頁應用。在配合其他庫方面它給了你更大的的空間,但相應,你也需要做更多的架構決策。例如,Vue.js 核心默認不包含路由和 Ajax 功能,並且通常假定你在應用中使用了一個模塊構建系統。這可能是最重要的區別。
- Angular 使用雙向綁定,Vue 也支持雙向綁定,不過默認為單向綁定,數據從父組件單向傳給子組件。在大型應用中使用單向綁定讓數據流易於理解。
- 在 Vue.js 中指令和組件分得更清晰。指令只封裝 DOM 操作,而組件代表一個自給自足的獨立單元 —— 有自己的視圖和數據邏輯。在 Angular 中兩者有不少相混的地方。
- Vue.js 有更好的性能,並且非常非常容易優化,因為它不使用臟檢查。Angular,當 watcher 越來越多時會變得越來越慢,因為作用域內的每一次變化,所有 watcher 都要重新計算。並且,如果一些 watcher 觸發另一個更新,臟檢查循環(digest cycle)可能要運行多次。 Angular 用戶常常要使用深奧的技術,以解決臟檢查循環的問題。有時沒有簡單的辦法來優化有大量 watcher 的作用域。Vue.js 則根本沒有這個問題,因為它使用基於依賴追蹤的觀察系統並且非同步列隊更新,所有的數據變化都是獨立地觸發,除非它們之間有明確的依賴關係。唯一需要做的優化是在 v-for 上使用 track-by。
有意思的是,Angular 2 和 Vue 用相似的設計解決了一些 Angular 1 中存在的問題。
React
React.js 和 Vue.js 確實有一些相似 —— 它們都提供數據驅動、可組合搭建的視圖組件。當然它們也有許多不同。
首先,內部實現本質上不同。React 的渲染建立在 Virtual DOM 上——一種在內存中描述 DOM 樹狀態的數據結構。當狀態發生變化時,React 重新渲染 Virtual DOM,比較計算之後給真實 DOM 打補丁。
Virtual DOM 提供了一個函數式的方法描述視圖,這真的很棒。因為它不使用數據觀察機制,每次更新都會重新渲染整個應用,因此從定義上保證了視圖與數據的同步。它也開闢了 JavaScript 同構應用的可能性。
Vue.js 不使用 Virtual DOM 而是使用真實 DOM 作為模板,數據綁定到真實節點。Vue.js 的應用環境必須提供 DOM。但是,相對於常見的誤解——Virtual DOM 讓 React 比其它的都快, Vue.js 實際上性能比 React 好,而且幾乎不用手工優化。而 React,為了最優化的渲染需要處處實現 shouldComponentUpdate 和使用不可變數據結構。
在 API 方面,React(或 JSX)的一個問題是,渲染函數常常包含大量的邏輯,最終看著更像是程序片斷(實際上就是)而不是界面的視覺呈現。對於部分開發者來說,他們可能覺得這是個優點,但對那些像我一樣兼顧設計和開發的人來說,模板能讓我們更好地在視覺上思考設計和 CSS。JSX 和 JavaScript 邏輯的混合干擾了我將代碼映射到設計的思維過程。相反,Vue.js 通過在模板中加入一個輕量級的 DSL (指令系統),換來一個依舊直觀的模板,且能將邏輯封裝進指令和過濾器中。
React 的另一個問題是:由於 DOM 更新完全交給 Virtual DOM 管理,當想要自己控制 DOM 時就有點棘手了(雖然理論上可以做到,但是這樣做就本質上違背了 React 的設計思想)。如果應用需要特別的自定義 DOM 操作,特別是複雜時間控制的動畫,這個限制就很討厭。在這方面,Vue.js 更靈活,有許多用 Vue.js 製作的 FWA/Awwwards 獲獎站點。
再多說幾句:
- React 團隊雄心勃勃,計劃讓 React 成為通用平台的 UI 開發工具,而 Vue 專註於為 Web 提供實用的解決方案。
- React,由於它的函數式特質,可以很好地使用函數式編程模式。但是對於初級開發者和初學者這也導致較大的學習難度。Vue 更易學習並能快速投入開發。
- 對於大型應用,React 社區已經創造了大量的狀態管理方案,例如 Flux/Redux。Vue 本身不解決這個問題(React 內核也是),但是可以輕鬆地修改狀態管理模式,實現一個類似的架構。Vue 有自己的狀態管理方案 Vuex,而且 Vue 也可以與 Redux 一起用。
- React 的開發趨勢是將所有東西都放在 JavaScript 中,包括 CSS。已經有許多 CSS-in-JS 方案,但是所有的方案多多少少都有它的問題。而且更重要的是,這麼做脫離了標準的 CSS 開發經驗,並且很難和 CSS 社區的已有工作配合。Vue 的 單文件組件 在把 CSS 封裝到組件模塊的同時仍然允許你使用你喜歡的預處理器。
Ember
Ember 是一個全能框架。它提供大量的約定,一旦你熟悉了它們,開發會很高效。不過,這也意味著學習曲線較高,而且不靈活。在框架和庫(加上一系列鬆散耦合的工具)之間權衡選擇。後者更自由,但是也要求你做更多的架構決定。
也就是說,最好比較 Vue.js 內核和 Ember 的模板與數據模型層:
- Vue 在普通 JavaScript 對象上建立響應,提供自動化的計算屬性。在 Ember 中需要將所有東西放在 Ember 對象內,並且手工為計算屬性聲明依賴。
- Vue 的模板語法可以用全功能的 JavaScript 表達式,而 Handlebars 的語法和幫助函數語法相比之下非常受限。
- 在性能上,Vue 甩開 Ember 幾條街,即使是 Ember 2.0 最新的 Glimmer 引擎。Vue 自動批量更新,在性能比較關鍵時 Ember 要手工管理循環。
Polymer
Polymer 是另一個由 Google 支持的項目,實際上也是 Vue.js 的靈感來源之一。Vue.js 的組件可以類比為 Polymer 中的自定義元素,它們提供類似的開發體驗。最大的不同在於,Polymer 依賴最新的 Web 組件特性,在不支持的瀏覽器中,需要載入笨重的 polyfill,性能也會受到影響。相對的,Vue.js 無需任何依賴,最低兼容到IE9。
另外,在 Polymer 1.0 中,為了性能開發團隊嚴格限制了它的數據綁定系統。例如,Polymer 模板支持的表達式僅有邏輯逆運算和簡單的方法調用。它的計算屬性實現得也不是很靈活。
最後,當發布到生產環境時,Polymer 元素需要用專用工具 vulcanizer 打包。相比之下,單文件 Vue 組件能與 Webpack 無縫整合,因而你可以輕鬆在組件中使用 ES6 及任意 CSS 預處理器。
Riot
Riot 2.0 提供類似的基於組件的開發模式(Riot 稱之為「標籤」),API 小而美。我認為 Riot 與 Vue 在設計思路上有許多相同點。不過,儘管比 Riot 重一點,Vue 提供了一些顯著優處:
- 真實的條件渲染,Riot 渲染所有的分支,然後簡單地顯示/隱藏它們。
- 一個強大得多的路由器,Riot 的路由 API 過於簡陋。
- 更成熟的工具鏈支持,見 Webpack + vue-loader。
- 過渡效果系統,Riot 沒有。
- 更佳的性能。Riot 實際上使用臟檢查而不是 Virtual DOM,因而遭受跟 Angular 一樣的性能問題。
參考 medium 的一篇文章。https://medium.com/js-dojo/react-or-vue-which-javascript-ui-library-should-you-be-using-543a383608d#.dgeudmjmb
VUE- If you like building apps with templates (or want the option to), go with Vue.
- If you like simplicity and things that 「just work」, go with Vue.
- If you need your application to be as small and fast as possible, go with Vue.
- If you plan to build a large scale app, go with React.
- If you want a library that is adaptable for both web and native apps, go with React.
- If you want the biggest ecosystem, go with React.
React 是把前端徹底抽象化. 然後可以再具象, 在 Web 端具象為 DOM, 在 React Native 上具象為 iOS 或 Android 的 View.
野心好大. 我也希望它將來能一統天下.
Vue 就是專註 Web 端, 其實實質還是 DOM 操作. 入門簡單, 文檔資料也足夠. 性能上不清楚, 目前沒遇到瓶頸.這兩個都值得學一下 都會讓你對另外一個有更深入的認識
首先,vue並不會重寫全部的dom,而是跟蹤和監視對象,當對象發生變化,就會自動更新變化的不分。
第二,react和vue都需要寫額外的邏輯來決定數據更不更新和更新成什麼樣。
第三,react也有雙向綁定,但是由於狀態維護的方式不同,需要手動更新,這點沒有vue便捷和智能。
我自己也做過二者之間的比較,拋磚引玉,大家一起探討下
react有了mobx還可以活很久:http://www.slideshare.net/kkxx1254/react-mobx。個人覺得Vue可以搞一個類似mobx.spy這樣的全局監聽函數,這樣即使不用flux/redux也可以實現日誌監控之類的功能。純web項目我傾向於Vue.js,大道至簡,快速省心才是王道。
用了很久的 React,發現其有以下缺點:
1,無法優雅的處理動畫,官方的動畫插件真是難用,並且一萬年不更新,感覺 Facebook 是想放棄這一塊了,相比於 mvvm 的 vue 和 angular,真是差了一截。個人比較習慣 Angular 基於 web amination 實現的動畫用法。
2,form 處理是個不小的短板,目前有兩個勉強還能用的方案,一種類似於 formsy 的封裝,另一種就是 redux form,但是這兩種實現都是令人不滿意的,一種是用不符合 react 寫法的方式,另外一種強制綁定了 redux,唉,反正就是糾結。而 vue 這塊做得確實比較易用,語法糖就是甜~
3,無法優雅的實現全局dom的組件,比如 modal 比如 tooltip,需要引用一個引用 react 內部方法的 portal,並且每次用起來,都要引入組件,比如在 button 里引入 modal 組件,越看越丑。vue 里用指令,分分鐘搞定……
4,在做伺服器渲染的時候,編譯環境是沒有的,不想 vue 直接提供可用的 bundle,處處要自己搞,啥,想優化一下性能,對不起,官方不支持!自己 patch 源碼去吧,唉,不說了,讓我偷偷哭一會…… vue 默認支持組件庫緩存和 renderToString,羨慕不已…… 至於vue 的渲染性能,沒用過不多說。
手機打字,以上~vue 對比 react
## 狀態變化跟蹤,界面同步
- react 可以隨時添加新的 state 成員;vue 不行,必須定義時準備好頂級成員,而且非頂級成員也必須通過api設置才能是響應式的;這點,react 比較方便
- vue 可以跟蹤任何 scope 的狀態,包括各級父甚至不相關的,因為vue採用 getter/setter機制;react 默認只能檢測本組件的狀態變化,比較受限制
## 以 javascript 為核心,和以 html 為核心
* react 是狀態到 html 的映射
* vue 是現有 HTML 模板,然後綁定到對應的 Vue javascript 對象上
## 組件化比較
* react 傾向於細粒度的組件劃分,確實也容易做到
* vue 相對不太,但是如果 Vue 也採用 jsx 語法,那麼還是比較容易做到的
## directive
vue 由於提供的 direct 特別是預置的 directive 因為場景場景開發更容易;react 沒有 directive
- v-if, v-show, v-else
- v-text, v-html,
- v-model 對於表單處理 vue 明顯更方便
- @event.prevent @keyxxx.enter
## watch
- vue 可以 watch 一個數據項;而 react 不行
## 計算屬性
- vue 有,提供方便;而 react 不行
## 語法糖
vue 更簡潔
- :prop=「xxx」 @event=「xxx」 比 prop={this.state.xxx} onEvent={this.xxx} 要簡潔很多
- vue 通過 proxy 使得訪問 Vue 對的各種成員都是直接訪問
- vue 事件鉤子命名更簡潔 mounted, beforeMound;react 是 componentDidMount 比較冗長
## web 組件化
- vue 一個組件內分別寫 html,js,css
- vue html 可以用 jade/pug 等等,js 可以用 coffee,es6,ts 等等,css 可以用 less,sass,stylus 等等,將更多現代web技術輕鬆的集成進來
vue感覺上手要比react簡單,對動畫支持很不錯,用起來也很簡單。react初期入門有些難度,多了一些很抽象的概念,例如,虛擬DOM,狀態機,flux單項數據流等。不過個人感覺react的組件化思想要比vue好,比較具有顛覆性。
我根據自己在項目的經驗,說一下淺見:
對於不會持續的小型的web應用,使用vue.js能帶來短期內較高的開發效率. 否則採用react
vue不適合應用在需要持續發生工程迭代的項目,又有一定的學習曲線(要了解一些特有的概念).
vue是基於MVVM的一種框架。數據可以在view和ViewModel之間進行雙向流動。數據雙向流動會帶來一個問題是:當工程規模比較大時,如果處理不當,前端的行為將變得難以預測,進而就難以調試和維護了
react只是相當於 MVVM體系中的View + viewmodel, 他需要配合flux架構才能顯示出真正的威力(我覺得flux架構的單向數據流理念對前端工程來說是非常重要的)
另外, react 通過抽象出virtual dom的方式, 隔離了繁瑣的DOM操作,並統一了native和web的開發體驗(不知道vue能否做到這點). 同時React的設計理念借鑒了函數式思想,比如react的渲染函數j就是是一個純函數,使得前端寫單元測試變得較為容易。Vue 不支持 IE8 比較硬傷,如果需要 IE8 版的類 Vue 解決方案,可以考慮 yoxjs/yox: A lightweight mvvm framework
此外,yoxjs 的體積只有 vue 的一半,移動端非常友好
推薦閱讀:
※Redux有哪些最佳實踐?
※Weex 和 React Native 的根本區別在哪裡?
※前端自學,目前可以用react寫一些項目,但是不知道目前現在在前端上的水平,希望可以獲得指點?
※初級前端er如何學習react.js?
※Web Component 和類 React、Angular、Vue 組件化技術誰會成為未來?