91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

vue中如何實現長列表性能優化

發布時間:2022-03-11 11:11:37 來源:億速云 閱讀:1428 作者:小新 欄目:移動開發

這篇文章主要介紹vue中如何實現長列表性能優化,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

長列表性能優化

1. 不做響應式

比如會員列表、商品列表之類的,只是純粹的數據展示,不會有任何動態改變的場景下,就不需要對數據做響應化處理,可以大大提升渲染速度

比如使用 Object.freeze() 凍結一個對象,MDN的描述是 該方法凍結的對象不能被修改;即不能向這個對象添加新屬性,不能刪除已有屬性,不能修改該對象已有屬性的可枚舉性、可配置性、可寫性,以及不能修改已有屬性的值,以及該對象的原型也不能被修改

export default {
 data: () => ({
   userList: []
}),
 async created() {
   const users = await axios.get("/api/users");
   this.userList = Object.freeze(users);
}
};

Vue2 的響應式源碼地址:src/core/observer/index.js - 144行 是這樣的

export function defineReactive (...){
   const property = Object.getOwnPropertyDescriptor(obj, key)
   if (property && property.configurable === false) {
       return
  }
   ...
}

可以看到一開始就判斷 configurable 為 false 的直接返回不做響應式處理

configurable 為 false 表示這個屬性是不能被修改的,而凍結的對象的 configurable 就是為 false

vue中如何實現長列表性能優化

Vue3 里則是添加了響應式flag,用于標記目標對象類型

2. 虛擬滾動

如果是大數據很長的列表,全部渲染的話一次性創建太多 DOM 就會非常卡,這時就可以用虛擬滾動,只渲染少部分(含可視區域)區域的內容,然后滾動的時候,不斷替換可視區域的內容,模擬出滾動的效果

<recycle-scroller
 class="items"
 :items="items"
 :item-size="24"
>
 <template v-slot="{ item }">
   <FetchItemView
     :item="item"
     @vote="voteItem(item)"
   />
 </template>
</recycle-scroller>

原理是監聽滾動事件,動態更新需要顯示的 DOM,并計算出在視圖中的位移,這也意味著在滾動過程需要實時計算,有一定成本,所以如果數據量不是很大的情況下,用普通的滾動就行

以上是“vue中如何實現長列表性能優化”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

vue
AI

无棣县| 贵南县| 铁力市| 吐鲁番市| 神农架林区| 湘潭县| 博兴县| 广德县| 上杭县| 苗栗市| 永靖县| 古田县| 泽州县| 秭归县| 沂水县| 台中县| 原平市| 合阳县| 繁昌县| 施甸县| 天津市| 罗山县| 贵阳市| 龙井市| 昭通市| 兴义市| 平昌县| 平果县| 什邡市| 奉节县| 盐边县| 泰宁县| 襄樊市| 泰州市| 繁峙县| 灵石县| 泽库县| 桂东县| 梨树县| 韩城市| 文安县|