


Analisis mendalam tentang anti goncang/pendikit muktamad dalam Vue3
Artikel ini membawakan anda anti goncang/pendikit yang muktamad dalam Vue 3 (termasuk kaedah anti goncang/pendikit yang biasa) Artikel ini bukan sahaja menerangkan kaedah anti goncang atau pendikit yang asal kaedah pembungkusan, yang lebih mudah dan lebih jelas untuk digunakan.
Dalam proses pembangunan bahagian hadapan, apabila ia melibatkan interaksi dengan pengguna, ia pada asasnya perlu diproses Operasi biasa ialah menambah anti goncang pada kedudukan yang sepadan.
Tambah fungsi anti goncang atau pendikit: pertama, untuk menghalang pengguna daripada kerap beroperasi kedua, untuk menjimatkan sumber pelayan tertentu dan mengurangkan pembaziran sumber.
Prinsip anti goncang atau pendikit
Anti goncang (debounce)
Jika pengguna kerap beroperasi beberapa kali, kali terakhir akan diguna pakai Sudah tentu, kali pertama juga boleh digunakan sebagai asas untuk kemas kini data atau permintaan sumber rangkaian untuk menghapuskan operasi berlebihan atau mengurangkan jumlah pembaziran tertentu. meminta sumber. [Cadangan berkaitan: tutorial video vuejs, pembangunan bahagian hadapan web]
Kod sampel
function debounce (fn, delay = 300){ let timer = null return function (...args) { clearTimeout(timer) timer = setTimeout(()=>{ fn.call(this, ...args) }, delay); } }
Gunakan
debounce(()=> count += 1, 1000)
pendikit
Dalam julat masa tertentu, jika pengguna mencetuskannya beberapa kali, ia akan hanya dilaksanakan sekali Untuk mengelakkan pengguna daripada kerap beroperasi.
Kod Contoh
let timer = null function throttle (fn, delay = 300) { if(timer == null){ timer = setTimeout(() => { fn() clearTimeout(timer) timer = null }, delay); } }
Menggunakan
throttle(()=> count += 1, 1000)
Penerangan Alam Sekitar
vue 3
- jemput
Pakej baharu
Di sini saya akan menerangkannya dalam dua modul. Satu adalah anti goncang; yang lain adalah pendikit.
Walaupun perbezaan antara keduanya tidaklah terlalu besar, namun tetap ada perbezaannya. Masuk dalam kereta, kawan-kawan.
Debounce
Mari kita lihat kandungan pakej biasa dahulu.
Pakej biasa-1
Kod
function debounce (fn, delay = 300){ let timer = null return function (...args) { if(timer != null){ clearTimeout(timer) timer = null } timer = setTimeout(()=>{ fn.call(this, ...args) }, delay); } }
Gunakan
const addCount = debounce(()=> count.value += 1, 1000)
Pakej biasa-2
Kod
let timer = null function debounce (fn, delay = 1000){ if(timer != null){ clearTimeout(timer) timer = null } timer = setTimeout(fn, delay) }
menggunakan
const addCount = () => debounce(()=> count.value += 1, 1000)
pakej baharu
Di sini kita perlu menggunakan vue 3
customRef
untuk melaksanakan cara baharu kami. Saya tidak akan menulis secara terperinci di sini. Saya menambah komen terus di atas setiap baris kod. Saya percaya kawan saya anda boleh memahami.
Kod
// 从 vue 中引入 customRef 和 ref import { customRef, ref } from "vue" // data 为创建时的数据 // delay 为防抖时间 function debounceRef (data, delay = 300){ // 创建定时器 let timer = null; // 对 delay 进行判断,如果传递的是 null 则不需要使用 防抖方案,直接返回使用 ref 创建的。 return delay == null ? // 返回 ref 创建的 ref(data) : // customRef 中会返回两个函数参数。一个是:track 在获取数据时收集依赖的;一个是:trigger 在修改数据时进行通知派发更新的。 customRef((track, trigger) => { return { get () { // 收集依赖 track() // 返回当前数据的值 return data }, set (value) { // 清除定时器 if(timer != null){ clearTimeout(timer) timer = null } // 创建定时器 timer = setTimeout(() => { // 修改数据 data = value; // 派发更新 trigger() }, delay) } } }) }
Gunakan
// 创建 const count = debounceRef(0, 300) // 函数中使用 const addCount = () => { count.value += 1 } // v-model 中使用 <input type="text" v-model="count">
pendikit
kami Masih sama, mari kita lihat kandungan pembungkusan biasa dahulu.
Pakej biasa-1
Kod
let timer = null function throttle (fn, delay = 300) { if(timer == null){ timer = setTimeout(() => { fn() clearTimeout(timer) timer = null }, delay); } }
Gunakan
const addCount = () => throttle(()=> count.value += 1, 1000)
Pakej biasa-2
Kod
function throttle (fn, delay = 300) { let timer = null return function (...args) { if(timer == null){ timer = setTimeout(() => { fn.call(this, ...args) clearTimeout(timer) timer = null }, delay); } } }
Gunakan
const addCount = throttle(()=> count.value += 1, 1000)
Pakej baharu
Pendikit dan anti goncang dalam pakej dan Penggunaannya serupa.
Kod
// data 为创建时的数据 // delay 为节流时间 function throttleRef (data, delay = 300){ // 创建定时器 let timer = null; // 对 delay 进行判断,如果传递的是 null 则不需要使用 节流方案,直接返回使用 ref 创建的。 return delay == null ? // 返回 ref 创建的 ref(data) : // customRef 中会返回两个函数参数。一个是:track 在获取数据时收集依赖的;一个是:trigger 在修改数据时进行通知派发更新的。 customRef((track, trigger) => { return { get () { // 收集依赖 track() // 返回当前数据的值 return data }, set (value) { // 判断 if(timer == null){ // 创建定时器 timer = setTimeout(() => { // 修改数据 data = value; // 派发更新 trigger() // 清除定时器 clearTimeout(timer) timer = null }, delay) } } } }) }
Menggunakan
// 创建 const count = debounceRef(0, 300) // 函数中使用 const addCount = () => { count.value += 1 } // v-model 中使用 <input type="text" v-model="count">
Ringkasan
Di atas ialah artikel Vue 3 中的极致防抖/节流(含常见方式防抖/节流)
Jika terdapat sebarang kekurangan dalam keseluruhan artikel atau jika anda mempunyai cara yang lebih baik atau cerapan unik lain, sila berasa bebas untuk mengulas + menghantar mesej peribadi.
Tentulah kawan, anda telah belajar trick lain, anda boleh like + follow + komen.
Semoga artikel ini bermanfaat kepada rakan-rakan yang membaca.
Rakan yang ingin tahu cara melaksanakan penyelesaian yang sama dalam vue 2
boleh klik di sini Melaksanakan kaedah CustomRef anti goncang/pendikit dalam Vue 2
(Pembelajaran? perkongsian video :Tutorial pengenalan Vuejs, Video pengaturcaraan asas)
Atas ialah kandungan terperinci Analisis mendalam tentang anti goncang/pendikit muktamad dalam Vue3. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



PHP dan Vue: gandingan sempurna alat pembangunan bahagian hadapan Dalam era perkembangan pesat Internet hari ini, pembangunan bahagian hadapan telah menjadi semakin penting. Memandangkan pengguna mempunyai keperluan yang lebih tinggi dan lebih tinggi untuk pengalaman tapak web dan aplikasi, pembangun bahagian hadapan perlu menggunakan alat yang lebih cekap dan fleksibel untuk mencipta antara muka yang responsif dan interaktif. Sebagai dua teknologi penting dalam bidang pembangunan bahagian hadapan, PHP dan Vue.js boleh dianggap sebagai alat yang sempurna apabila digandingkan bersama. Artikel ini akan meneroka gabungan PHP dan Vue, serta contoh kod terperinci untuk membantu pembaca memahami dan menggunakan kedua-dua ini dengan lebih baik.

Dalam temu bual pembangunan bahagian hadapan, soalan lazim merangkumi pelbagai topik, termasuk asas HTML/CSS, asas JavaScript, rangka kerja dan perpustakaan, pengalaman projek, algoritma dan struktur data, pengoptimuman prestasi, permintaan merentas domain, kejuruteraan bahagian hadapan, corak reka bentuk, dan teknologi dan trend baharu. Soalan penemuduga direka bentuk untuk menilai kemahiran teknikal calon, pengalaman projek dan pemahaman tentang trend industri. Oleh itu, calon harus bersedia sepenuhnya dalam bidang ini untuk menunjukkan kebolehan dan kepakaran mereka.

Tutorial JavaScript: Bagaimana untuk mendapatkan kod status HTTP, contoh kod khusus diperlukan: Dalam pembangunan web, interaksi data dengan pelayan sering terlibat. Apabila berkomunikasi dengan pelayan, kami selalunya perlu mendapatkan kod status HTTP yang dikembalikan untuk menentukan sama ada operasi itu berjaya dan melaksanakan pemprosesan yang sepadan berdasarkan kod status yang berbeza. Artikel ini akan mengajar anda cara menggunakan JavaScript untuk mendapatkan kod status HTTP dan menyediakan beberapa contoh kod praktikal. Menggunakan XMLHttpRequest

Django ialah rangka kerja aplikasi web yang ditulis dalam Python yang menekankan pembangunan pesat dan kaedah bersih. Walaupun Django ialah rangka kerja web, untuk menjawab soalan sama ada Django ialah front-end atau back-end, anda perlu mempunyai pemahaman yang mendalam tentang konsep front-end dan back-end. Bahagian hadapan merujuk kepada antara muka yang pengguna berinteraksi secara langsung, dan bahagian belakang merujuk kepada program bahagian pelayan Mereka berinteraksi dengan data melalui protokol HTTP. Apabila bahagian hadapan dan bahagian belakang dipisahkan, program bahagian hadapan dan bahagian belakang boleh dibangunkan secara bebas untuk melaksanakan logik perniagaan dan kesan interaktif masing-masing, dan pertukaran data.

Sebagai bahasa pengaturcaraan yang pantas dan cekap, bahasa Go popular secara meluas dalam bidang pembangunan bahagian belakang. Walau bagaimanapun, beberapa orang mengaitkan bahasa Go dengan pembangunan bahagian hadapan. Malah, menggunakan bahasa Go untuk pembangunan bahagian hadapan bukan sahaja boleh meningkatkan kecekapan, tetapi juga membawa ufuk baharu kepada pembangun. Artikel ini akan meneroka kemungkinan menggunakan bahasa Go untuk pembangunan bahagian hadapan dan memberikan contoh kod khusus untuk membantu pembaca memahami dengan lebih baik bahagian ini. Dalam pembangunan front-end tradisional, JavaScript, HTML dan CSS sering digunakan untuk membina antara muka pengguna

Django: Rangka kerja ajaib yang boleh mengendalikan pembangunan bahagian hadapan dan belakang! Django ialah rangka kerja aplikasi web yang cekap dan berskala. Ia mampu menyokong berbilang model pembangunan web, termasuk MVC dan MTV, dan boleh membangunkan aplikasi web berkualiti tinggi dengan mudah. Django bukan sahaja menyokong pembangunan bahagian belakang, tetapi juga boleh membina antara muka bahagian hadapan dengan cepat dan mencapai paparan paparan yang fleksibel melalui bahasa templat. Django menggabungkan pembangunan bahagian hadapan dan pembangunan bahagian belakang menjadi penyepaduan yang lancar, supaya pembangun tidak perlu pakar dalam pembelajaran

Gabungan teknologi Golang dan bahagian hadapan: Untuk meneroka bagaimana Golang memainkan peranan dalam bidang bahagian hadapan, contoh kod khusus diperlukan Dengan perkembangan pesat Internet dan aplikasi mudah alih, teknologi bahagian hadapan telah menjadi semakin penting. Dalam bidang ini, Golang, sebagai bahasa pengaturcaraan bahagian belakang yang berkuasa, juga boleh memainkan peranan penting. Artikel ini akan meneroka cara Golang digabungkan dengan teknologi bahagian hadapan dan menunjukkan potensinya dalam bidang bahagian hadapan melalui contoh kod khusus. Peranan Golang dalam bidang front-end adalah sebagai cekap, ringkas dan mudah dipelajari

Pengenalan kepada kaedah mendapatkan kod status HTTP dalam JavaScript: Dalam pembangunan bahagian hadapan, kita selalunya perlu berurusan dengan interaksi dengan antara muka bahagian belakang, dan kod status HTTP adalah bahagian yang sangat penting daripadanya. Memahami dan mendapatkan kod status HTTP membantu kami mengendalikan data yang dikembalikan oleh antara muka dengan lebih baik. Artikel ini akan memperkenalkan cara menggunakan JavaScript untuk mendapatkan kod status HTTP dan memberikan contoh kod khusus. 1. Apakah kod status HTTP bermakna kod status HTTP apabila penyemak imbas memulakan permintaan kepada pelayan, perkhidmatan tersebut
