為什麼Vue和React都拋棄了物件導向寫法 ?

時間 2021-05-06 02:57:06

1樓:Burry

在我看來vue和react並沒有拋棄物件導向的寫法,react自然不用說,學習和了解過react的人應該都知道react的類式元件的寫法很物件導向,要是你非要用函式式元件 + Hooks就當我沒說。來說說vue,雖然我在某一刻也覺得vue拋棄了物件導向,但回過頭來看vue中data需要寫成乙個函式然後返回乙個物件,和vuex + vue-router的裡面的API,其實還是有很好的物件導向的思想的!

2樓:jun4rui

什麼是物件導向?這只是為了讓人更容易設計複雜資料模型的一種方式方法。

前端並不是純粹的類似於程式語言的東西,前端是融合程式語言和網頁元素、網頁元件之類的另外的東西了。所以就抽象上來說前端需要和程式語言不同方式的抽象,硬套物件導向顯然不是最優解。

當然,現在前端還沒有太好的方式解決這個問題,還在持續發展和尋找中。

3樓:

從狹義上來說,r/v 只是沒用 class 而已,但實際上從廣義的思想來說,什麼叫做 OOP 呢?

假設你用的是一門純 OOP 語言,使用了某 MVC 框架。

但你真的用的是 OOP 的思想嗎?

MVC 是一種資料與邏輯分離的寫法,是典型的面向過程的思維。

反觀 React,雖然從頭到尾不用 class 關鍵字,但是閉包和 hooks 可以讓我很輕鬆的完成領域模型的構建,然後抽離乙個出自定義 hook,甚至完成前端 DDD 都是可以的。

來分析一下:

抽象:自定義 hook;

封裝性:資料和邏輯封裝在hook裡面,有選擇性的暴露給外界;

組合優於繼承:通過 hooks 的組合拼裝更複雜的 hook 或元件;

單一職責原則、開放封閉原則、黎克特制替換原則、依賴倒置原則......

這些 OOP 的經典思想都出現在了,或者說可以非常契合的運用在 R/V 上

這難道還不夠 OOP 嘛?

4樓:小劉

我不清楚vue和React,但我清楚c++裡面的變遷。

在某些業務,繼承是極不常用的。因為類和類之間很少能找到共性,反而需要乙個類中攜帶其他類的資訊。one loop per thread這種reactor模型中也是組合聚合用得比較多。

5樓:lhrbu

react hook是擁抱函式元件不是擁抱函式式,兩者的差別好比雷鋒與雷峰塔。reack hook是非常正經的oop產物,即通過修改狀態來描述元件行為,跟修改屬性描述類在邏輯上是等價的,只是沒用class這個關鍵字。

6樓:

沒有拋棄,物件導向不等於class關鍵字,在js中,function也是物件,函式式元件,本質仍然是元件,和類元件本質上並無區別,只是寫法差異

7樓:李靜波

最終的JS,在物件導向方面,總是有些不足。所以頂層的UI框架就只好走另外的路線。

這說明,在具體的工程方面,沒有什麼唯一標準,只要在乙個不足的基礎上不斷地打補丁,最後也有不錯的結果。

另外,不是拋棄,是OO在前端暫時沒有以前那麼高光。十年河東十年河西,在計算機技術方面同樣適用。

『流行是一首窩心的歌,突然間說過就過』

——『年度之歌』謝安琪

8樓:伊撒爾

這兩者的前後關係,不是先拋棄了物件導向,再搞了hooks和composition api

而是,先搞了hooks和composition,再編理由說這倆的好處,貶低物件導向的害處(比如this,繼承)

框架作者的話,你們也信

敗血症隨口一提函式式,不可變,algebraic effects,結果所有人紛紛無腦瞎扯

腦子是個好東西,真的

這種東西都是有好有壞,說不上到底哪個更好,你搞任何乙個方向,有的搞就好了

再者說了,react 也沒有拋棄 class 和繼承,vue 也沒拋棄 option 和 this,他們認為的壞東西仍舊存在著

他們引入的好東西,未來也一定是歷史包袱

9樓:邵鎖

我覺得至少有兩個因素:乙個是在邏輯復用上,函式更容易理解(輸入輸出)。第二個是函式更容易進行單元測試。

貌似"不變性"也是一種。不變性帶來的結果應該也是上面兩個因素。

10樓:前端361

首先vue和react並沒有拋棄面相物件,只是更傾向於函式式程式設計思想,尤其是react,但是程式設計思想不是孤立存在的,就像函式式程式設計思想中的閉包,是一種變形了的物件

11樓:克瑞斯

js的this因為有this指向問題所以存在心智負擔函式式在編譯壓縮時會獲得更小的體積

js在發展社群在發展

這些都不能算是定論

vue也因為是漸進式框架導致這兩者具有互操作性完全可以把setup當新式的data使用邏輯還是按照vue2那樣寫雖然有this問題但是沒了.value以及return問題

所以框架是死的人是活的還是看你怎樣去想怎樣去寫

12樓:夜無趣

vue2

抽離方法只能靠mixin,但是mixin最大缺陷就是強烈依賴上下文,且怕有重複鍵衝突

函式式就相反了,不吃上下文,引數閉包引用,換成mixin沒了this那不就成了乙個工具函式?而且this呼叫的東西特別雜亂,包含了data,props,computed,prototype,不翻到特定的地方檢視你根本不能確定是哪乙個

為什麼 react 還比 vue 火?

Lam 其實我覺得,存在即合理,在React和Vue的選型上已經爭論那麼多年了,其實框架或者技術的選中除了不同的場景外,還要看使用的團隊情況綜合考慮的,例如你做乙個後台系統,後續可能需要後端幫忙一起的開發維護的,這個時候你選擇react,那麼對後端來說或許不是最友好的,因為現在的後端基本都會使用一下...

vue和react你怎麼選擇?

熱心碼農小馮 學前端5個月了,也工作了2個月了,在公司寫的是react,vue基本沒用過,有一次學校有個vue專案的bug他們解決不了,要我改一下,連學帶改花了2小時,體會就是 如果react的自由度是90 那麼vue的自由度大概只有30 就感覺寫慣了react再寫點vue的話,就會感覺被限制,很不...

Vue和React和Angular的缺點是什麼?

張國鈺 Angular 太龐大了,三者中,整合度最高,引入了對框架來說很好的但是對前端不太友好的概念,容易勸退 React 太散了,整合度三者最低,如果從0搭建專案,得東拼西湊,不過現在好很多了,感謝社群 Vue挺好的,恩,是挺好的 AaronJin Vue用的不多,要說缺點的話,我覺得最大的問題是...