傳統專案使用Vue時,為了提高效能需要修改Vue原始碼,可行嗎?

時間 2021-05-08 17:55:18

1樓:千默

子元件監聽父元件傳過的data中所使用的屬性值,然後再賦值給自己的元件,這樣即使全域性data更新,只有更新到子元件使用的值這個子元件才會更新,不知道我說的公尺能不能理解。

2樓:

但總感覺效能不是很好,因為我對於暫時不掛載的元素,生成vm(要不怎麼獲取優先順序呢)但不生成其子vm,用 作為佔位符,並儲存這個dom物件到vm上,需時用replaceChild進行DOM替換。

看到vue有非同步元件機制,打算學習一下,前一陣子閱讀vue原始碼,發現vue在元件的vm時,對於Vue.component的第二個引數的型別(Object or Function) 有不同的處理方法,也許可以從這裡切入。

3樓:水肘肘

為啥乙個不懂技術的專案經理要指導開發怎麼去實現功能?還要讓開發去改原始碼?難道他以前就是這麼幹的?

知道改了原始碼多少事嗎,他就這麼確定你能hold住?是不是在他眼裡這些原始碼八百年也不更新公升級?還有你們產品經理去哪了,乙個專案經理對技術實現各種指手畫腳,最怕這種看了幾天技術文章的產品經理上來就對你技術實現指手畫腳了,要不讓他來做?

4樓:王司徒倒懸掃六合

這個問題我遇到過乙個類似的,分析了一陣子才解決:記vue大型表單專案的乙個效能問題

總而言之就是父元件的data資料物件被改變時,patch比對所有子元素是否需要變動,而你的子元件實在太多,所以會遍歷很多很多次。你除錯下Vue.prototype.

_update這個方法,就會發現被呼叫了非常多次,上面的鏈結是我分析問題的思路,你可以參考下。

很贊同黑貓的回答,請不要修改vue本身,尤其是理解還不透徹的情況下,你最好找到導致渲染時間長的最關鍵的渲染的一步,在和專案經理理論,如果貿貿然改動了vue本身,以後想公升級vue版本那就蛋疼了。

5樓:毛絨球狀閃電

聽起來好像是想做個類似於react的shouldComponentUpdate的東西?

vue應該是不需要的。

如果實在有潔癖,通常來說這種時候我們會選擇immutablejs。

如果沒辦法說服你們可愛的專案經理,那麼不妨就照著他的想法做好了,反正你應該也不還想就這樣辭職呢。

工作中什麼人都有,果然還是自己開心最重要。

6樓:

以我對Vue的了解和對題主貼圖的理解,子元件的資料變動是不會引發父元件重新渲染的。

案例: JS Bin

題主需要給出更好的reproduction,或者很有可能你的部分寫法是有問題的。(比如this.b的更新是用 this.

b = newB, 而不是 this.b.m = 'new m')

7樓:

盡可能遲地解構物件,你的需求就自然完成了

這一條不管你用react vue angular還是redux mobx vuex都適用

要元件復用就包一層資料元件

8樓:

先profile看看瓶頸在哪在談解決方案吧,感覺思路是錯的。

大量DOM的繪製是瓶頸,但重繪不代表大量。另乙個瓶頸是大量資料observed。

看意思像是資料量的問題,考慮將與DOM無關的資料從vue中分離出來試試。

9樓:

1. 典型的選擇了錯誤的架構,然後嘗試用破壞性的方案修復問題2. 帶來問題的不是 vue 本身,而是你們組織資料的方式3. 別把 vue 僅當個模板用

4. v=f(m)

5. 拆成幾個介面就好了

在使用vue時對於屬性什麼時候該加 什麼時候不需要加 感到疑惑。並不是簡單的動態繫結就能解釋全的?

人來人往 分享乙個我公升級elementUI到2.0的乙個坑。就是你第乙個元件繫結了prop給乙個物件。見第一張圖 如果你把第乙個元件的data傳給第二個元件的時候,這個defaultProps也會被繼承到第二個元件內。elementUI1.0的時候是不會繼承的。2.0是會繼承的,所以如果你不想它d...

vue專案如何實現微前端架構?

xionchan 疑惑 之前用Jquery,layui框架做的單頁面專案如何整合到乾坤框架啊?比如乙個簡單的單頁面index.html,標籤hello world loading狀態也不能消失。 F loat 一行命令即可為你的 Vue 專案接入 Qiankun 框架,實現微前端架構 F loat ...

像 Vue 這種開源專案,如果專案維護者寫了嚴重 bug 是否會有懲罰?每個版本是否會嚴格測試?

我不覺得會有法律意義上的懲罰。那個license裡面應該有免責的說明,你用了出事了是你自己的問題。但是如果一直出事,管理不善之類的原因,就會導致使用者啊社群啊之類的變壞變少,然後就沉寂了。或者其他人fork出去維護了,就不理你了。這對於原作者可能是最大的懲罰吧。 魏智勇 我覺得,測試和版本管理是有的...