1 回答

TA貢獻1934條經驗 獲得超2個贊
ReactReact和Vue有許多相似之處,它們都有:使用VirtualDOM提供了響應式(Reactive)和組件化(Composable)的視圖組件。保持注意力集中在核心庫,伴隨于此,有配套的路由和負責處理全局狀態管理的庫。相似的作用域,我們會用的時間來講這一塊的比較。不僅我們要保持技術的準確性,同時兼顧平衡。我們指出React比Vue更好的地方,例如,他們的生態系統和豐富的自定義渲染器。React社區在這里非常積極地幫助我們實現這一平衡,特別感謝來自React團隊的DanAbramov。他非??犊幕ㄙM時間來貢獻專業知識,來幫我們完善這個文件,直到我們都滿意。這么說,就是希望你能對這兩個庫的比較的公平性感到放心。性能簡介到目前為止,在現實的測試中,Vue是優于React的(通常至少快20%-50%,盡管在某些情況下還要更快)。我們可以提供一個到這個參照項目的鏈接,但是坦率的說,所有的參照在某些方面是有缺陷的,很少有像你所寫的一個真實應用。那么,讓我們詳細了解下吧。渲染性能在渲染用戶界面的時候,DOM的操作是最昂貴,不幸的是沒有庫可以讓這些原始操作變得更快。我們能做的最好的就是:盡量減少DOM操作。Vue和React都使用虛擬DOM來實現,并且兩者工作一樣好。盡量減少除DOM操作以外的其他操作。這是Vue和React的一個不同的地方。假如說,在React中,渲染一個元素的額外開銷是1,而平均渲染一個組件的開銷是2。在Vue中,一個元素的開銷更像0/vue/dist/vue.js">然后就可編寫Vue代碼并應用到生產中,而不用擔心性能問題。由于起步階段不需學JSX,ES2015或構建系統,所以建立應用花的時間會更少。本地渲染ReactNative能使你用相同的組件模型編寫有本地渲染能力的APP(IOS或Android)。能同時跨多平臺開發,對開發者是非常棒的。相應地,Vue和Weex會進行官方合作,Weex是阿里的跨平臺用戶界面開發框架,Weex的JavaScript框架運行時用的就是Vue。這以為著不僅在瀏覽器,在IOS和Android上面也可以用Vue來進行開發。在現在,Weex還在積極發展,成熟度也不能和ReactNative相抗衡。但是,Weex的發展是由世界上最大的電子商務企業的需求在驅動,Vue團隊也會和Weex團隊積極合作確保為開發者帶來良好的開發體驗。MobXMobx在React社區很流行,實際上在Vue也采用了幾乎相同的反應系統。在有限程度上,React+Mobx也可以被認為是更繁瑣的Vue,所以如果你習慣組合使用它們,那么選擇Vue會更合理。Angular1Due的一些語法和Angular的很相似(例如v-ifvsng-if)。因為Angular是Vue早期開發的靈感來源。然而,Augular中存在許多問題,在Vue中已經得到解決。復雜性在API與設計兩方面上Vue.js都比Angular1簡單得多,因此你可以快速地掌握它的全部特性并投入開發。靈活性和模塊化Vue.js是一個更加靈活開放的解決方案。它允許你以希望的方式組織應用程序,而不是在任何時候都必須遵循Angular1制定的規則,這使讓Vue能適用于各種項目。我們知道把決定權交給你,是非常必要的,就是是為什么提供Webpacktemplate,讓你用幾分鐘,去選擇是否用高級特性,比如熱模塊加載、linting、Cssextraction等等。數據綁定Angular1使用雙向綁定,Vue在不同組件間強制適用單向數據流。這使應用中的數據流清晰易懂。指令與組件在Vue中指令和組件分得更清晰。指令只封裝DOM操作,而組件代表一個自給自足的獨立單元——有自己的視圖和數據邏輯。在Angular中兩者有不少相混的地方。性能Vue.js有更好的性能,并且非常非常容易優化,因為它不使用臟檢查。在Angular1中,當watcher越來越多時會變得越來越慢,因為作用域內的每一次變化,所有watcher都要重新計算。并且,如果一些watcher觸發另一個更新,臟檢查循環(digestcycle)可能要運行多次。Angular用戶常常要使用深奧的技術,以解決臟檢查循環的問題。有時沒有簡單的法來優化有大量watcher的作用域。Vue.js則根本沒有這個問題,因為它使用基于依賴追蹤的觀察系統并且異步列隊更新,所有的數據變化都是獨立地觸發,除非它們之間有明確的依賴關系。有意思的是,Angular2和Vue用相似的設計解決了一些Angular1中存在的問題。Angular2Augluar2完全是一個全新的框架。例如,它具有優秀的組件系統,并且許多實現已經完全重寫,API也完全改變了。TypeScriptAngular1面向的較小的應用程序,Angular2已轉移焦點,面向的是大型企業應用。TypeScript被引用,這對那些喜歡用Java或者C#等類型安全的語言的人是非常有用的。Vue也適合企業應用,也可以使用TypeScript來支持官方類型和用戶貢獻的類型,盡管這是可選的。尺寸和性能在性能方面,這兩個框架都是非常快。但是如果你查看第三方參照,就可以得出Vue2比Angular2要快的。在尺寸方面,雖然Angular2使用tree-shaking技術和編譯技術能使代碼尺寸減小。即便包含編譯器和全部功能Vue2(23kb)比起Angular2(50kb)還是小的多。但是要注意,用Angular的App的尺寸縮減是用tree-shaking移除了那些框架中沒有用到的功能,當隨著引入功能的增多,尺寸會越來越大。靈活性Vue官方提供了構建工具,但沒限制你如何構建。有人喜歡用統一的方式構建,也有很多開發者喜歡這種靈活自由的方式。學習曲線開始使用Vue,你使用的是熟悉的HTML、符合ES5規則的JavaScript(也就是純JavaScript)。有了這些基本的技能,你可以快速地掌握它(指南)并投入開發。Angular2的學習曲線是非常陡峭的。即使不包括TypeScript,它們開始指南中所用的就有ES2015標準的JavaScript,18個NPM依賴包,4個文件和超過3千多字介紹,這一切都是為了完成個HelloWorld。而Vue'sHelloWorld就非常簡單。EmberEmber是一個全能框架。它提供大量的約定,一旦你熟悉了它們,開發會很高效。不過,這也意味著學習曲線較高,而且不靈活。在框架和庫(加上一系列松散耦合的工具)之間權衡選擇。后者更自由,但是也要求你做的架構決定。也就是說,最好比較Vue.js內核和Ember的模板與數據模型層:Vue在普通JavaScript對象上建立響應,提供自動化的計算屬性。在Ember中需要將所有東西放在Ember對象內,并且手工為計算屬性聲明依賴。Vue的模板語法可以用全功能的JavaScript表達式,而Handlebars的語法和幫助函數語法相比之下非常受限。在性能上,Vue甩開Ember幾條街,即使是Ember2.0的最新Glimmer引擎。Vue自動批量更新,Ember當性能關鍵處需要手動管理。KnockoutKnockout是MVVM領域內的先驅,并且追蹤依賴。它的響應系統和Vue相似。它對瀏覽器支持以及所有的表現也是讓人印象深刻的。它能最低支持到IE6,而Vue最低只能支持到IE9。隨著時間的推移,Knockout的發展已有所放緩,并且略顯有點老舊了。比如,它的組件系統缺少完備的生命周期事件方法,盡管這些在現在是非常常見。以及相比Vue調用子組件的接口顯得有點笨重。如果你有興趣研究,會發現它們在接口設計的構思理念上是不同的。這些通過各自創建的simpleTodoList可以體現出來?;蛟S有點主觀,但是很多人認為Vue的API接口更簡單結構更優雅。PolymerPolymer是另一個由谷歌贊助的項目,事實上也是Vue的一個靈感來源。Vue的組件可以粗略的類比于Polymer的自定義元素,并且兩者具有相似的開發風格。最大的不同之處在于,Polymer是構建于最新版的WebComponents標準之上的,并且需要非凡的polyfills來工作(性能下降),瀏覽器本身不支持這些功能。相比而言,Vue不需要依賴polyfills來工作,最低到IE9。在Polymer1.0版本中,為了彌補性能,團隊非常有限的使用數據綁定系統。例如,在Ploymer中支持的唯一表達式只有布爾值否定和單一的方法的調用,它的computed方法的實現也不是很靈活。Polymer自定義的元素是用HTML文件來創建的,這回限制你的普通的JavaScript/CSS(和被現代瀏覽器普遍支持的語言特性)。相比之下,Vue的單文件允許你非常容易的使用ES2015和你想用的Css的預編譯處理器。當部署到生產環境的時候,Polymer建議使用HTMLImports加載所有資源。而這要求服務器和客戶端都支持Http2.0協議,且瀏覽器實現了標準。這是否可行就取決于你的目標用戶和部署環境了。如果狀況不佳,你必須用Vulcanizer工具來來打包Polymer元素。在這方面,Vue可以結合異步組件的特性和Webpack的代碼分割特性來實現懶加載(lazy-loaded)。這同時確保了對舊瀏覽器的兼容且又能更快加載。對Vue和WebComponent標準之間進行深層次的整合,也是完全可行的,比如CustomElements、ShadowDOM的樣式封裝。然而現在在我們做出嚴肅的承諾之前,我們仍在等待標準成熟,進而廣泛應用于主流的瀏覽器中。RiotRiot2.0提供了一個類似于基于組件的開發模型(在Riot中稱之為”Tag”),提供小巧精美的API。Riot和Vue可能共享一些設計理念。即使相比Roit重一點,Vue還是有很多顯著優勢的:根據真實條件來渲染,Roit根據是否有分支簡單顯示或隱藏所有內容。功能更加強大的路由機制,Roit的路由功能的API是極少的。成熟工具的支持。Vue提供官方支持Webpack、Browserify和SystemJS,而Roit是依靠社區來建立集成系統。過渡效果系統。Riot現在沒有提供。更好的性能。Roit盡管廣告稱用虛擬DOM,實際上用的還是臟檢查機制,因此和Angular1患有相同的性能問題。以上所述是小編給大家介紹的Vue.js2.0和React、Augular等其他前端框架大比拼
- 1 回答
- 0 關注
- 888 瀏覽
添加回答
舉報