尤雨溪:React 是不是比 Vue 牛,为什么?
提問(wèn)內(nèi)容
我看過(guò)非常多的人都這樣說(shuō),我總結(jié)他們理由幾乎都是react顯得牛皮。有人能夠給我真正去分析react做項(xiàng)目牛逼在哪嗎,vue和react,我用vue多,我是覺(jué)得簡(jiǎn)單好用,做項(xiàng)目快,寫(xiě)同一個(gè)項(xiàng)目,react代碼肯定比vue多,vue的一些操作都太輕便了,組件設(shè)計(jì)的好的話,每個(gè)組件代碼很少,并且還是html,js,css分離看著十分清晰,我覺(jué)得react比vue方便的地方就是props
========
我反復(fù)看了幾遍我的表述,好像沒(méi)有說(shuō)react一定比vue吊,或者vue天下第一,
都這么暴力了嗎,能看清我的描述嗎?我只是想聽(tīng)分析?不是和你們吵架,能不能正常點(diǎn),暴躁老哥們,想吵架的人去貼吧,莫名其妙我就變成vue神教的了。
寫(xiě)代碼寫(xiě)程序就是解決業(yè)務(wù)需求的,框架不正是為這個(gè)服務(wù)的嗎?
我的眼里開(kāi)發(fā)者就是為了讓生活讓工作變得更簡(jiǎn)單的,而不是更復(fù)雜,只要能解決需求,哪個(gè)簡(jiǎn)單用哪個(gè)(對(duì)我個(gè)人而言,我所做的項(xiàng)目用vue做的比react更快,所以我不懂為什么react比vue牛逼,我的工作沒(méi)給我這種體驗(yàn),所以我在提問(wèn),看清我的問(wèn)題描述)
react和vue對(duì)我們不也應(yīng)該是這樣嗎 讓我們更方便更快速的做完需求,不論寫(xiě)什么代碼,本質(zhì)上大家不都是在調(diào)別的開(kāi)發(fā)者的api,我這里的提問(wèn)就是針對(duì)業(yè)務(wù)來(lái)說(shuō)的,我想聽(tīng)分析,你可以拿你自己工作案例來(lái)說(shuō),我用完redux還有redux-saga的感受,vuex一行api就做到了,redux需要那么多繁瑣的配置反而我還看到好多人在網(wǎng)上吹噓react寫(xiě)起來(lái)多裝逼。我買(mǎi)菜算個(gè)帳而已啊,我不需要還要去證明1+1=2啊
怎么有的人對(duì)框架搞的跟信仰一樣了,我上面描述不就簡(jiǎn)單說(shuō)我個(gè)人感受嗎?大家干的項(xiàng)目可能都不大一樣。你說(shuō)你的感受就完了 非要和人剛什么
尤雨溪的回答
這個(gè)問(wèn)題下面的很多回答太偏激了,其實(shí)我淡出知乎就是因?yàn)檫@類(lèi)破事… 但是作為作者還是認(rèn)真地說(shuō)一說(shuō)吧,希望能以后別再有這種問(wèn)題了。
這里我可以大方地承認(rèn),如果多年以后要論歷史地位,React 肯定是高于 Vue 的。事實(shí)上,我作為一個(gè)開(kāi)發(fā)者,也是由衷地佩服 Jordan Walke, Sebastian Markbage 這樣的,能從開(kāi)發(fā)模式層面上提出突破性的新方向的人。
React 從一開(kāi)始的定位就是提出 UI 開(kāi)發(fā)的新思路。當(dāng)年 Pete Hunt 最開(kāi)始推廣 React 的時(shí)候的一句口號(hào)就叫 "Rethinking Best Practices",這樣的定位使得 React 打開(kāi)了一些全新的思路,吸引了一群喜歡折騰的早期核心用戶,并在這個(gè)基礎(chǔ)上通過(guò)社區(qū)迭代孵化出了許多今天被 React 開(kāi)發(fā)者當(dāng)作常識(shí)的 pattern。這是 React 偉大的地方,Vue 里面也有很多地方是直接受到了 React 的啟發(fā)。React 敢做這樣的嘗試,是因?yàn)樗?Facebook。這樣的體量的公司,在 infrastructure 層面獲得質(zhì)的提升,收益是巨大的,而且 Facebook 的工程師們足夠聰明又要靠工資吃飯,改變他/她們的習(xí)慣并不是什么問(wèn)題。而對(duì)外推廣,則是一種大公司才有的 “改變業(yè)界” 的底氣。
Vue 從一開(kāi)始的定位就是盡可能的降低前端開(kāi)發(fā)的門(mén)檻,讓更多的人能夠更快地上手開(kāi)發(fā)。我以前也說(shuō)過(guò),開(kāi)發(fā) Vue 的初衷不是為了搞個(gè)大新聞,只是做了個(gè)我自己用得舒服的框架。我雖然也在 Google 這樣的大公司呆過(guò),但骨子里是一個(gè)喜歡自由的人,也一直覺(jué)得獨(dú)立開(kāi)發(fā)者很酷(這也是為什么最終自己也成了一個(gè)獨(dú)立開(kāi)發(fā)者)。很多時(shí)候我更希望自己做的東西能幫到那些中小型企業(yè)和個(gè)人開(kāi)發(fā)者。舉個(gè)例子來(lái)說(shuō),美國(guó)傳統(tǒng)行業(yè)里有很多 small business,它們不像大公司那樣有專(zhuān)門(mén)的 IT 團(tuán)隊(duì)來(lái)信息化整個(gè)流程,很多只能雇一個(gè)普通的 contractor 程序員,有些甚至是老板自己兼職研究代碼。我收到過(guò)好幾封這樣的感謝信,說(shuō)因?yàn)?Vue 讓它們多快好省地做了個(gè)內(nèi)部應(yīng)用,解決了實(shí)際問(wèn)題,這樣的故事是讓我覺(jué)得特別爽的。
做 React 這樣的不迎合用戶,而是試圖改變用戶的設(shè)計(jì)需要有足夠的本錢(qián):你得有足夠的資源和背景去強(qiáng)行越過(guò)初始推廣的那個(gè)陡坡。事實(shí)上,如果沒(méi)有 Facebook 作為 React 的推廣者,React 很可能最終是一個(gè)有著忠實(shí)用戶群體的小眾框架(比如 Elm)。作為一個(gè)個(gè)人項(xiàng)目的 Vue 沒(méi)有這樣的宣傳資源,也并不是為了改變用戶。所以從設(shè)計(jì)的角度上來(lái)說(shuō),Vue 首先考慮的是假設(shè)用戶只掌握了 web 基礎(chǔ)知識(shí) (HTML, CSS, JS) 的情況下,如何能夠最快理解和上手,實(shí)現(xiàn)一個(gè)看得見(jiàn)摸得著的應(yīng)用。
一個(gè) API 看得順不順眼,用得舒不舒服,很大程度上取決于你跟一個(gè)技術(shù)的核心用戶群體的重合程度。編程語(yǔ)言之間噴來(lái)噴去還少么?大家都是圖靈完備,然而此之蜜糖,彼之砒霜。Vue 的 API 設(shè)計(jì)固然有可以商榷的地方,但 React 也不是完美無(wú)瑕,不然也不會(huì)從 mixins 到 HOC 到 render props 一次次地折騰,更沒(méi)有 hooks 什么事了。直到 Suspense 出現(xiàn)前,也不存在什么只有 React 才能做到的事情(順帶一提,有意思的是 hooks 基本上廢掉了過(guò)去大部分基于組件的邏輯抽象模式,抹掉了 JSX vs. 模版的一個(gè)優(yōu)勢(shì),也完全可以用在其他框架里,連 Angular 都已經(jīng)有對(duì)應(yīng)的原型實(shí)現(xiàn)…)然而 “不完美” 并沒(méi)有妨礙在過(guò)去的幾年內(nèi)大量的用戶用各自選擇的技術(shù)做出實(shí)際的產(chǎn)品 —— 從?State of JS 近兩年的數(shù)據(jù)來(lái)看,兩者的滿意率是差不多的,都在 90% 出頭,說(shuō)明兩者在 “滿足目標(biāo)用戶的需求” 這個(gè)衡量標(biāo)準(zhǔn)下,表現(xiàn)是差不多的??删S護(hù)性、可讀性、優(yōu)雅程度、生態(tài)這些東西嘴上怎么辯都可以,還是數(shù)據(jù)比較實(shí)在。
再說(shuō)說(shuō)具體技術(shù)層面:從加載速度、運(yùn)行時(shí)性能來(lái)說(shuō),兩者目前綜合各種場(chǎng)景應(yīng)該說(shuō)是沒(méi)有什么質(zhì)的差別。硬要說(shuō)的話,Vue 在 update 性能優(yōu)化方面需要的心智負(fù)擔(dān)可能少那么一點(diǎn) —— React 如果不注意,容易導(dǎo)致過(guò)多的組件無(wú)用 diff,但是實(shí)際上真正會(huì)遇到性能瓶頸的應(yīng)用也是少數(shù)… Vue 3 會(huì)比 Vue 2 快不少,加上模版編譯還有一些可進(jìn)一步發(fā)掘的優(yōu)化空間,所以性能上會(huì)比現(xiàn)在的 React 有一定優(yōu)勢(shì),但 React 那邊也在研究基于 prepack 的編譯時(shí)優(yōu)化,這個(gè)也是挺值得期待的。Vue 3 對(duì)于 TS 的支持會(huì)有很大改善(包括 TSX),我們也在計(jì)劃對(duì)模版做更好的 IDE 支持(比如補(bǔ)全、類(lèi)型檢查),現(xiàn)在沒(méi)有不代表以后不能有,有批評(píng)我們改進(jìn)就是了。其實(shí)過(guò)去大半年 Vue 本身沒(méi)有什么大更新是因?yàn)榫Χ挤旁诠ぞ哝溕狭?#xff0c;接下來(lái)又要回到核心上了。React 那邊 time slicing / Concurrent mode 要明年 Q2 才穩(wěn)定,那個(gè)時(shí)候應(yīng)該 Vue 3 的 time slicing 應(yīng)該也穩(wěn)定了(原型已實(shí)現(xiàn))。Suspense 在 data-fetching 穩(wěn)定之前并沒(méi)什么大用(要 2019 年中),這期間我們也會(huì)研究解決同類(lèi)問(wèn)題的方案。所以從純技術(shù)層面來(lái)說(shuō),React 現(xiàn)在比 Vue 牛逼么?不好說(shuō)。以后一定比 Vue 牛逼么?也不好說(shuō)。
使用數(shù)量方面,有很多文章拿各種數(shù)據(jù)來(lái)比較,有的是 GitHub stars,有的是 npm 下載量,有的是 Google trends,有的是 StackOverflow 的問(wèn)題數(shù)量… 其實(shí)這些數(shù)據(jù)都有很明顯的問(wèn)題,那就是它們跟實(shí)際使用者的數(shù)量并不一定是正比,會(huì)受到其它因素的影響,比如 GitHub stars 跟實(shí)際使用沒(méi)有直接關(guān)聯(lián);使用者中使用 CI 的比例會(huì)影響 npm 的下載量;Google trends 很難完美過(guò)濾掉 React 這樣的常見(jiàn)詞匯的 false positive;文檔和本身的上手難易程度會(huì)影響 StackOverflow 的問(wèn)題數(shù)量,等等… 所以我自己一直是以 Chrome 開(kāi)發(fā)者插件的使用者數(shù)量作為一個(gè)比較可靠的數(shù)據(jù),因?yàn)樗年P(guān)聯(lián)度是最直接的,潛在的干擾因素也是最少的。目前 Vue 的開(kāi)發(fā)者插件用戶數(shù)量約為 70.4 萬(wàn),而 React 是 136.3 萬(wàn),大致可以作為參考。React 的使用量還是有明顯優(yōu)勢(shì),不過(guò)這個(gè)數(shù)字比起兩年前已經(jīng)很不一樣了 —— 那時(shí)候大約是 1:7 的比例。從增速來(lái)看,Vue 是要快一些的。
說(shuō)了這么多,無(wú)非是希望大家能停下來(lái)想想所謂的 ”A 技術(shù)比 B 技術(shù)牛逼“ 背后到底是在爭(zhēng)些什么,我們使用這些技術(shù)的初衷又是什么。很多時(shí)候你說(shuō)這方面,他說(shuō)那方面,雞同鴨講,即使說(shuō)到一起去,也往往缺乏對(duì)等的信息量或者基礎(chǔ)共識(shí),只是各自表達(dá)主觀看法,最后變成兩個(gè)陣營(yíng)各自抱團(tuán)取暖… 說(shuō)到底,就算你證明了 A 比 B 牛逼,也不意味著你或者你的項(xiàng)目就牛逼了… 比起爭(zhēng)這個(gè),不如多想想怎么讓自己變得更牛逼吧。
總結(jié)
以上是生活随笔為你收集整理的尤雨溪:React 是不是比 Vue 牛,为什么?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 浙江省计算机单考单招分数线 2011,浙
- 下一篇: 在这个网站注册了帐号