vue項目實戰 - 如果高效的實現防抖和節流

在Vue項目中,處理高頻事件的優化至關重要,直接影響用戶體驗和應用性能。防抖(Debounce)和節流(Throttle)是兩種常用且有效的方法,可以控制事件觸發頻率,減少不必要的資源消耗。如何在Vue項目中高效地實現防抖和節流,是每個開發者需要掌握的實戰技巧。本文將結合具體的Vue實例,詳細介紹如何靈活應用這兩種技術,幫助開發者在實際項目中提升前端性能和用戶體驗。

目錄

1 安裝和引入

2 防抖的調用學習?

3 節流的調用學習

4 使用方法總結?


1 安裝和引入

執行安裝命令

npm i?js-tool-big-box

項目中引入(Vue項目),工具包對外提供了?eventBox 對象,可以用來調用防抖和節流的方法。

import { eventBox } from 'js-tool-big-box';

2 防抖的調用學習?

防抖呢,比如說一個人頻繁在輸入框輸入值,然后我們需要去判斷它輸入的手機號對不對,郵箱對不對,后者拿著這個輸入值去發送Ajax請求去查東西,肯定不能輸入一個字符就趕緊拿著去查,對吧,所以就需要防抖。

防抖呢就是設定一個時間值,比如2秒,你在這2秒內有操作,就取消,一直到2秒后沒有操作了,再去執行任務。

比如等電梯,早上著急打卡的同學們,越著急,越有人按電梯,有人按一下就得等5秒,除非有人急的不行了,按了關閉按鈕。所以,等5秒,沒人上了,電梯關閉,開始往上走。如果第4秒又有人按按鈕,他進來了,那么就再等5秒吧。

<template><div><input @keyup="handleChange" v-model="inputVal" /></div>
</template><script>
import { eventBox } from 'js-tool-big-box';export default {name: 'dj',data () {return {inputVal: ''}},created() {this.myDebounce = eventBox.debounce((data) => {this.sendAjax(data);}, 2000);},methods: {handleChange(event) {const val = event.target.value;this.myDebounce(val);},sendAjax(data) {console.log('發送時間::', new Date().getTime());console.log('發送請求:', data);},}
}
</script>

在截圖中,我分別輸入了1? ?222 333 ,其中222和333是頻繁輸入的,然后只調用了一次

3 節流的調用學習

節流呢,就像坐火車,人來人往的車站,川流不息的人群,但火車有時刻表,隔多久一趟車。下拉刷新就正好用到這個地方。

<script>
import { eventBox } from 'js-tool-big-box';export default {name: 'dj',data () {return {inputVal: ''}},created() {this.myThrottle = eventBox.throttle((data) => {this.sendAjax(data);}, 2000);},methods: {handleChange(event) {const val = event.target.value;this.myThrottle(val);},sendAjax(data) {console.log('發送時間::', new Date().getTime());console.log('發送請求:', data);},}
}
</script>

看這個時間戳打印的,我一直在頻繁輸入,然后他隔一段時間才執行一次,不錯不錯,節流了。

4 使用方法總結?

方法名返回值入參
debounce傳入的執行方法

第一個參數必填,表示需要執行的方法,

第二個參數非必填,表示需要延遲執行的時間,可不傳,默認300毫秒

throttle傳入的執行方法

第一個參數必填,表示需要執行的方法,

第二個參數非必填,表示需要延遲執行的時間,可不傳,默認300毫秒

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/15093.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/15093.shtml
英文地址,請注明出處:http://en.pswp.cn/web/15093.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

SEO優化,小白程序員如何做SEO優化流量從0到1

原文鏈接&#xff1a;SEO優化&#xff0c;小白程序員如何做SEO優化流量從0到1 1、SEO是什么&#xff1f; SEO即&#xff1a;搜索引擎優化(Search Engine Optimization)&#xff0c;是一種通過優化網站結構、內容和外部鏈接等因素&#xff0c;提高網站在搜索引擎中的自然排名&…

python愛心樹表白代碼

以下是一個使用Python的turtle模塊來繪制一顆愛心并表白的簡單示例代碼&#xff1a; import turtle import math # 設置屏幕 screen turtle.Screen() screen.bgcolor("black") # 繪制愛心 def draw_heart(t, size): t.speed(9) t.penup() t.goto(0, -size…

Python Minio 工具類封裝

最近因為需要對大規模的文件進行存儲&#xff0c;選了多種對象存儲方案&#xff0c;最終選擇了MinIO&#xff0c;為了方便python的調用&#xff0c;在minio第三方包的基礎上進行進一步封裝調用&#xff0c;該工具除了基礎的功能外&#xff0c;還封裝了多線程分片下載文件和上傳…

DeepDriving | CUDA編程-03:線程層級

本文來源公眾號“DeepDriving”&#xff0c;僅用于學術分享&#xff0c;侵權刪&#xff0c;干貨滿滿。 原文鏈接&#xff1a;CUDA編程-03:線程層級 DeepDriving | CUDA編程-01&#xff1a; 搭建CUDA編程環境-CSDN博客 DeepDriving | CUDA編程-02&#xff1a; 初識CUDA編程-C…

Linux之共享內存mmap用法實例(六十三)

簡介&#xff1a; CSDN博客專家&#xff0c;專注Android/Linux系統&#xff0c;分享多mic語音方案、音視頻、編解碼等技術&#xff0c;與大家一起成長&#xff01; 優質專欄&#xff1a;Audio工程師進階系列【原創干貨持續更新中……】&#x1f680; 優質專欄&#xff1a;多媒…

外賣霸王餐返利外賣會員卡小程序開發

外賣霸王餐返利外賣會員卡小程序開發 "社交電商賦能下的外賣返利小程序"是專為商家與用戶雙贏而設計的創新平臺。 以下是其開發方案的詳細步驟&#xff1a; 一、需求梳理&#xff1a;首先&#xff0c;我們需要明確小程序的核心功能和特色。包括設定活動類型、返利…

Python學習(3) 函數

定義 定義一個函數的格式&#xff1a; def 函數名(參數):執行代碼如果沒有參數&#xff0c;則稱為無參函數。 定義時小括號中寫的是形參&#xff08;形式參數&#xff09;&#xff0c;調用時寫的是實參&#xff08;實際參數&#xff09;。 調用 調用格式&#xff1a; def…

【Docker】Linux 系統(CentOS 7)安裝 Docker

文章目錄 對 VMware 軟件的建議官方說明文檔Docker安裝卸載舊版本docker設置倉庫開始安裝 docker 引擎最新版 Docker 安裝指定版本 Docker 安裝&#xff08;特殊需求使用&#xff09; 啟動 Docker查看 Docker 版本查看 Docker 鏡像設置 Docker 開機自啟動 驗證開機啟動是否生效…

自定義原生小程序頂部及獲取膠囊信息

需求&#xff1a;我需要將某個文字或者按鈕放置在小程序頂部位置 思路&#xff1a;根據獲取到的頂部信息來定義我需要放的這個元素樣式 * 這里我是定義某個指定頁面 json&#xff1a;給指定頁面的json中添加自定義設置 "navigationStyle": "custom" JS&am…

新時代AI浪潮下,程序員和產品經理如何入局AIGC領域?

當下&#xff0c;AI浪潮席卷全球&#xff0c;AIGC大模型技術已經成為當今技術領域的一個重要趨勢&#xff0c;對于產品經理來說&#xff0c;掌握這項技術不僅能夠增強他們的職業技能&#xff0c;還能在競爭激烈的職場中脫穎而出。 為什么呢&#xff1f; 把握AI時代的機遇 AI技…

StringMVC

目錄 一&#xff0c;MVC定義 二&#xff0c;SpringMVC的基本使用 2.1建立連接 - RequestMapping("/...") ?編輯 2.2請求 1.傳遞單個參數 2.傳遞多個參數 3.傳遞對象 4.參數重命名 5.傳遞數組 6. 傳遞集合 7.傳遞JSON數據 8. 獲取url中數據 9. 傳遞文…

怎么通過OpenAI API調用其多模態大模型(GPT-4o)

現在只要有額度&#xff0c;大家都可以調用OpenAI的多模態大模型了&#xff0c;例如GPT-4o和GPT-4 Turbo&#xff0c;我一年多前總結過一些OpenAI API的用法&#xff0c;發現現在稍微更新了一下。主要參考了這里&#xff1a;https://platform.openai.com/docs/guides/vision 其…

python數據類型之元組、集合和字典

目錄 0.三者主要作用 1.元組 元組特點 創建元組 元組解包 可變和不可變元素元組 2.集合 集合特點 創建集合 集合元素要求 集合方法 訪問與修改 子集和超集 相等性判斷 集合運算 不可變集合 3.字典 字典特點 字典創建和常見操作 字典內置方法 pprin模塊 0.…

k8s——Pod詳解

一、Pod基礎概念 1.1 Pod定義 Pod是kubernetes中最小的資源管理組件&#xff0c;Pod也是最小化運行容器化應用的資源對象。一個Pod代表著集群中運行的一個進程。kubernetes中其他大多數組件都是圍繞著Pod來進行支撐和擴展Pod功能的&#xff0c;例如&#xff0c;用于管理Pod運行…

繆爾賽思又來到了你的面前(哈希)

定義一棵根節點為 1 1 1&#xff0c; n ( 2 ≤ n ≤ 1 0 3 ) n(2≤n≤10^3) n(2≤n≤103) 個節點的樹的哈希值為&#xff1a; H ∑ i 1 n X i Y f a ( i ) m o d 998244353 H∑^n_{i1}X^iY^{fa(i)}\ mod\ 998244353 Hi1∑n?XiYfa(i) mod 998244353 f a ( i ) fa(i) fa(i)…

斷網之后的頁面,Autox.js是點擊還是上下滑動比較好?

在處理斷網之后的頁面&#xff0c;選擇點擊還是上下滑動作為刷新操作&#xff0c;取決于應用的設計和用戶界面。通常&#xff0c;這兩種操作都可以作為刷新頁面的方式&#xff0c;但它們各自有不同的適用場景&#xff1a; 點擊刷新 - 適用場景&#xff1a;如果應用提供了一個明…

Java進階學習筆記7——權限修飾符

什么是權限修飾符&#xff1f; 就是用來限制類中的成員&#xff08;成員變量、成員方法、構造器、代碼塊....&#xff09;能夠被訪問的范圍。 protected使用的比較少&#xff0c;但是程序員還是要閱讀代碼&#xff0c;看官方文檔是怎么寫的&#xff0c;都會接觸到protected修飾…

C#串口通信-串口相關參數介紹

串口通訊(Serial Communication)&#xff0c;是指外設和計算機間&#xff0c;通過數據信號線、地線等&#xff0c;按位進行傳輸數據的一種雙向通訊方式。 串口是一種接口標準&#xff0c;它規定了接口的電氣標準&#xff0c;沒有規定接口插件電纜以及使用的通信協議&#xff0c…

ssh 配置 authorized_keys 后無法免密登錄

查看日志&#xff1a; tail -f /var/log/auth.log May 25 15:55:13 121 sudo: pam_unix(sudo:session): session opened for user root by root(uid0) May 25 15:55:13 121 sshd[550561]: Received signal 15; terminating. May 25 15:55:13 121 sshd[922866]: Server liste…

性能測試場景的設計方法

引用&#xff1a;根據2008年Aberdeen Group的研究報告&#xff0c;對于Web網站&#xff0c;1秒的頁面加載延遲相當于少了11%的PV&#xff08;page view&#xff09;&#xff0c;相當于降低了16%的顧客滿意度。如果從金錢的角度計算&#xff0c;就意味著&#xff1a;如果一個網站…