μΌ | μ | ν | μ | λͺ© | κΈ | ν |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- νκ³ λ‘
- κ°λ°λΈλ‘κ·Έ
- javascript
- react
- ν°μ€ν 리
- typescript
- backend
- κ°λ°μ
- frontend
- nextjs
- Today
- Total
π My name is Ez : μ½λ€ μ¬μ κ°λ°life
[Performance] : Debouncing(λλ°μ΄μ±),Throttling(μ°λ‘νλ§) λ³Έλ¬Έ
[Performance] : Debouncing(λλ°μ΄μ±),Throttling(μ°λ‘νλ§)
μ΄μ§ν 2023. 7. 21. 22:57π€¦π»βοΈ λͺ¨λ₯΄λ κ² λ무λλ λ§λ€...
μ€λμ μμΉ¨ Frontκ°λ°μ νμλ₯Ό νλ€. λ°±μ€λ μλμ΄λΆκ»μ inputμ νμ΄νλ§ ν΄λ λͺ¨λ νλ©΄μμ λλλ§μ΄ λλ€κ³ ν΄μ μ΄λ»κ² μ²λ¦¬νλ©΄ μ’μμ§ νλ‘ νΈ μλμ΄λΆκ» μ§λ¬Έμ νμ ¨λ€.
κ·Έλ νμ λ§μμ΄ lodash - Debouncingμ μ¬μ©νλ©΄ μ’ μ€μ΄λ€ κ±°λΌκ³ νμ ¨λλ° λ λ¬΄μ¨ λ§μΈμ§ λͺ°λΌμ γ γ λ©λͺ¨μ₯μ κ°λ λ§ μ¨λμλ€.
μ λ§ λͺ¨λ₯΄λ κ² λ무λλ λ§λ€... (κ°λ μ κ°λ³κ² μ΅νκ³ μ€μ λ‘ μ μ©νλ λ°©λ²μ λ μμ±ν΄λ³ΌκΉ νλ€.) - lodash μ¬μ© μμ
1. Debouncing(λλ°μ΄μ±)
λλ°μ΄μ±μ΄λ?
μ μ κ° μμ²μ λ³΄λΌ λ μΌμ ν μκ°κ²©μ°¨λ₯Ό λκ³ , μ°μμμ λ°μν μ΄λ²€νΈλ₯Ό νλλ‘ λ¬Άμ΄μ, μ²μμ΄λ λ§μ§λ§ ν λ²μ ν΄λΉ μμ²(μ΄λ²€νΈ)μ μ€ννλ λ°©μμ λ§νλ€.
μ¬λ¬ λΈλ‘κ·Έμ κΈλ€μ μ½μ΄λ³Έ κ²°κ³Ό
λλΆλΆ κ²μν λ λ°μνλ μ΄λ²€νΈμ λν μ€λͺ μΌλ‘ μλ €μ£Όμ ¨λ€.
γ·, λ, λ₯,λλ°,λλ°©,λλ°μ°,λλ°μ΄,λλ°μ΄γ ,λλ°μ΄μ,λλ°μ΄μ± => μλ κ² μ΄λ²€νΈκ° μ°μμ μΌλ‘ λ°μν λ κ³μν΄μ ajaxμμ²μ νλ κ²μ λ§νλ€.
μ΄λ° μΈλ°μλ μμ²μ λ§κΈ° μν΄μ μΌμ κ°κ²©μ λκ³ ν λ²μ λ¬Άμ΄μ μμ²νλ κ²μ΄λΌκ³ νλ€.
κ΅¬κΈ κ²μμ°½μ λλ°μ΄μ± κ²μνμ λ λ€νΈμν¬ μμ²νλ§ λ΄λ 보μΈλ€.
lodashμμ debounce μ¬μ©νλ λ²μ κ°λ¨νκ² μ΄ν΄λ³΄λ©΄
lodash μ€μΉ
npm install lodash
npm install @types/lodash
import _, { debounce } from "lodash"
const handleDebouce = _.debounce((text: string) => {console.log(text)}, 500);
const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {
const text = e.currentTarget.value;
handleDebouce(text);
};
lodashλ₯Ό import νκ³ handleDebouceμμ debouceν¨μλ₯Ό νΈμΆνκ³ μνλ μκ°κ°κ²©(ms λ¨μ)λ₯Ό μ λ ₯νλ©΄ μλ£!
μ½μμ μ°νλ μμκ° νλλ‘ λ¬Άμ¬μ νμΆλλ€.
2. Throttling(μ°λ‘νλ§)
μ°λ‘νλ§?
μ μ κ° μ°μ΄μ΄μ μ΄λ²€νΈ μμ²μ νλ©΄ μΌμ ν μκ° κ°κ²©μ λκ³ , μ°μμ μΈ μ΄λ²€νΈλ₯Ό 무μνλ λ°©λ²μ λ§νλ€. κ²°κ΅, μΌμ μκ°μ κ°κ²©λμ μμ²λ μ΄λ²€νΈλ 무μνλ κ²μ΄λ€. (λλ μ΄ λ μκ° λμμ μ΄λ²€νΈλ 무μ)
μ°λ‘νλ§ μ€ν¬λ‘€ μ΄λ²€νΈμ λν΄μ λ§μ΄ κΈμ μ°μ ¨λλ°
μ€μ λ‘ scroll μ΄λ²€νΈμ μ½μλ‘κ·Έλ₯Ό μ°μ΄μ 보면 λ§μ°μ€ ν μ λ릴 λλ§λ€ μμ²λκ² μ½μμ΄ μ°νλ κ² λ³Ό μ μλ€.
μ°λ‘νλ§μ μ²λ¦¬νλ©΄ μΌμ μκ° λμμ μ½μμ΄ μ°νμ§ μλλ€. (λ무 μ κΈ°..)
const scrollEvent = () => {
console.log("μ€λ‘νλ§ ν
μ€νΈ!!");
}
window.addEventListener('scroll', scrollEvent);
import _, { throttle } from "lodash"
const handleScrollDebouce = _.throttle((evnt:any) => { ... }, 500);
λλ°μ΄μ±κ³Ό λμΌν λ°©μμΌλ‘ throttleλ§ λ³κ²½ν΄μ μ μ©μν€λ©΄ λλ€.
3. κ²°λ‘
μμ§μ λ κ°μ§ κ°λ μ λ£κ³ μ€λ μ΄ν΄ν λ°λ₯Ό μ 리ν μ λλΌμ μ΄νμ μ€μ λ‘ νλ‘μ νΈμ μ μ©ν΄μ μ΅μ νλ₯Ό ν΄λ³΄κ³ μΆλ€.
μ΄λ²€νΈ μ΅μ ν μ΄μΈμλ λ€λ₯Έ λ€μν λ°©λ©΄μ λ°©λ²λ λ§μ ν λ... ννμ΄ κ³΅λΆν΄μ μμλ¬μΌκ² λ€.
( loadshλ μ²μ μ½λ© λ°°μΈ λ, μ λ ¬ν λ νλ² μ¨λ³΄κ³ λ°λ‘ μ¨λ³Έ μ μ΄ μμλλ° μμ λ€μν κΈ°λ₯μ κ°μ§ λΌμ΄λΈλ¬λ¦¬μλ€.
λ΄κ° λͺ¨λ₯΄λ©΄ μλ κΈ°λ₯μ΄λΌλ μκ°μ΄ μμΈνλ€ γ γ .. )
'β¨οΈ Web Front-End > ETC' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[ETC] : 곡ν΅μ»΄ν¬λνΈ? μ? (0) | 2023.08.04 |
---|---|
[Day.js] : Moment.js (Day.jsλ‘ λ³κ²½) (0) | 2023.07.24 |
[StoryBook] : μ€ν 리λΆμ΄ λμ§? (0) | 2023.07.22 |