728x90
๋ฐ˜์‘ํ˜•

2025/06 19

[js] requestAnimationFrame()

requestAnimationFrame()์€ ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ๋‹ค์Œ ํ™”๋ฉด์„ ๊ทธ๋ฆฌ๊ธฐ ์ง์ „์— ์‹คํ–‰ํ•  ์ฝœ๋ฐฑ์„ ์˜ˆ์•ฝํ•˜๋Š” ํ•จ์ˆ˜์ž…๋‹ˆ๋‹ค.์ฃผ๋กœ ์• ๋‹ˆ๋ฉ”์ด์…˜ ์ฒ˜๋ฆฌ๋‚˜ ๋ Œ๋”๋ง ํƒ€์ด๋ฐ์„ ์ •ํ™•ํ•˜๊ฒŒ ๋งž์ถ”๊ณ  ์‹ถ์„ ๋•Œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. โœ… ๊ธฐ๋ณธ ์‚ฌ์šฉ๋ฒ•js requestAnimationFrame(() => { // ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ๋‹ค์Œ repaint ์ „์— ์‹คํ–‰ํ•  ์ฝ”๋“œ // DOM์ด ๋ Œ๋”๋ง๋œ ์ดํ›„์— ์•ˆ์ „ํ•˜๊ฒŒ ์‹คํ–‰๋จ});๐Ÿง  ๊ฐœ๋… ์š”์•ฝํ•ญ๋ชฉ์„ค๋ช…์‹คํ–‰ ์‹œ์ ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ๋‹ค์Œ ํ”„๋ ˆ์ž„์„ ๊ทธ๋ฆฌ๊ธฐ ์ง์ „ํ˜ธ์ถœ ๋นˆ๋„์ผ๋ฐ˜์ ์œผ๋กœ ์ดˆ๋‹น 60ํšŒ (60fps)์ฃผ ๋ชฉ์ ๋ถ€๋“œ๋Ÿฌ์šด ์• ๋‹ˆ๋ฉ”์ด์…˜ / ๋ Œ๋”๋ง ์ดํ›„ DOM ์กฐ์ž‘์ด์ setTimeout๋ณด๋‹ค ๋ถ€๋“œ๋Ÿฝ๊ณ  ํšจ์œจ์ ์ด๋ฉฐ, ๋ Œ๋”๋ง ํƒ€์ด๋ฐ ๋ณด์žฅ ๐ŸŽฏ ์–ธ์ œ ์‚ฌ์šฉํ•˜๋‚˜?DOM ๋ณ€๊ฒฝ ์งํ›„ ํ›„์† ์ฒ˜๋ฆฌ์˜ˆ: innerHTML ๋˜๋Š” .append() ํ›„ ํŠน์ • ์š”์†Œ..

performance.getEntriesByType("navigation")

performance.getEntriesByType("navigation")๋Š” ํŽ˜์ด์ง€์˜ ๋กœ๋”ฉ ๋ฐฉ์‹(์˜ˆ: ์ƒˆ๋กœ๊ณ ์นจ, ํžˆ์Šคํ† ๋ฆฌ ํƒ์ƒ‰, ์ตœ์ดˆ ๋กœ๋“œ ๋“ฑ) ์„ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋˜๋Š” Web Performance API์˜ ๋ฉ”์„œ๋“œ์ž…๋‹ˆ๋‹ค.์ด๋ฅผ ํ†ตํ•ด ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ํŽ˜์ด์ง€๋ฅผ ์–ด๋–ค ๋ฐฉ์‹์œผ๋กœ ๋ถˆ๋Ÿฌ์™”๋Š”์ง€๋ฅผ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๐Ÿ“Œ ๋ฌธ๋ฒ•javascriptconst entries = performance.getEntriesByType("navigation");๋ฐ˜ํ™˜๊ฐ’: PerformanceNavigationTiming ๊ฐ์ฒด ๋ฐฐ์—ด (๋ณดํ†ต ํ•˜๋‚˜์˜ ํ•ญ๋ชฉ๋งŒ ์กด์žฌ)์ด ๊ฐ์ฒด์—๋Š” type, startTime, duration ๋“ฑ ๋‹ค์–‘ํ•œ ๋กœ๋”ฉ ๊ด€๋ จ ์ •๋ณด๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.๐Ÿ“˜ ์ฃผ์š” ์†์„ฑ (PerformanceNavigationTiming)javasc..

IT์ง€์‹ 2025.06.18

[js] requestAnimationFrame ํ•จ์ˆ˜

requestAnimationFrame()์€ ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ๋‹ค์Œ ํ™”๋ฉด์„ ๊ทธ๋ฆฌ๊ธฐ ์ง์ „์— ์‹คํ–‰ํ•  ์ฝœ๋ฐฑ์„ ์˜ˆ์•ฝํ•˜๋Š” ํ•จ์ˆ˜์ž…๋‹ˆ๋‹ค.์ฃผ๋กœ ์• ๋‹ˆ๋ฉ”์ด์…˜ ์ฒ˜๋ฆฌ๋‚˜ ๋ Œ๋”๋ง ํƒ€์ด๋ฐ์„ ์ •ํ™•ํ•˜๊ฒŒ ๋งž์ถ”๊ณ  ์‹ถ์„ ๋•Œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. โœ… ๊ธฐ๋ณธ ์‚ฌ์šฉ๋ฒ•js requestAnimationFrame(() => { // ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ๋‹ค์Œ repaint ์ „์— ์‹คํ–‰ํ•  ์ฝ”๋“œ // DOM์ด ๋ Œ๋”๋ง๋œ ์ดํ›„์— ์•ˆ์ „ํ•˜๊ฒŒ ์‹คํ–‰๋จ});๐Ÿง  ๊ฐœ๋… ์š”์•ฝํ•ญ๋ชฉ์„ค๋ช…์‹คํ–‰ ์‹œ์ ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ๋‹ค์Œ ํ”„๋ ˆ์ž„์„ ๊ทธ๋ฆฌ๊ธฐ ์ง์ „ํ˜ธ์ถœ ๋นˆ๋„์ผ๋ฐ˜์ ์œผ๋กœ ์ดˆ๋‹น 60ํšŒ (60fps)์ฃผ ๋ชฉ์ ๋ถ€๋“œ๋Ÿฌ์šด ์• ๋‹ˆ๋ฉ”์ด์…˜ / ๋ Œ๋”๋ง ์ดํ›„ DOM ์กฐ์ž‘์ด์ setTimeout๋ณด๋‹ค ๋ถ€๋“œ๋Ÿฝ๊ณ  ํšจ์œจ์ ์ด๋ฉฐ, ๋ Œ๋”๋ง ํƒ€์ด๋ฐ ๋ณด์žฅ ๐ŸŽฏ ์–ธ์ œ ์‚ฌ์šฉํ•˜๋‚˜?DOM ๋ณ€๊ฒฝ ์งํ›„ ํ›„์† ์ฒ˜๋ฆฌ์˜ˆ: innerHTML ๋˜๋Š” .append() ํ›„ ํŠน์ • ์š”์†Œ..

Front/JS & jQuery 2025.06.18

[intelliJ] Redo ๋‹จ์ถ•ํ‚ค (ctrl + y)

์›๋ž˜ Windows๋‚˜ ์ผ๋ฐ˜ ์•ฑ๋“ค์—์„œ๋Š” Ctrl + Y๊ฐ€ '๋‹ค์‹œ ์‹คํ–‰(Redo)' ๊ธฐ๋Šฅ์ธ๋ฐ,**IntelliJ IDEA์—์„œ๋Š” Ctrl + Y๊ฐ€ '์ค„ ์‚ญ์ œ(Delete Line)'**๋กœ ๊ธฐ๋ณธ ์„ค์ •๋˜์–ด ์žˆ์–ด์„œ ํ—ท๊ฐˆ๋ฆด ์ˆ˜ ์žˆ์–ด์š”. IntelliJ ์—์„œ Redo ๋‹จ์ถ•ํ‚ค๋Š” ctrl + shift + Z โœ… ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•: ๋‹จ์ถ•ํ‚ค ์„ค์ • ๋ณ€๊ฒฝํ•˜๊ธฐCtrl + Y๋ฅผ ๋‹ค์‹œ **Redo(๋‹ค์‹œ ์‹คํ–‰)**๋กœ ๋ฐ”๊พธ๊ณ  ์‹ถ๋‹ค๋ฉด ์•„๋ž˜ ์ ˆ์ฐจ๋ฅผ ๋”ฐ๋ผ ์„ค์ •ํ•˜์„ธ์š”:๐Ÿ”ง Ctrl + Y๋ฅผ Redo๋กœ ๋ฐ”๊พธ๋Š” ๋ฐฉ๋ฒ• (Windows ๊ธฐ์ค€)File > Settings (๋˜๋Š” Ctrl + Alt + S)(macOS: IntelliJ IDEA > Preferences)์™ผ์ชฝ ๋ฉ”๋‰ด์—์„œKeymap ํด๋ฆญ๊ฒ€์ƒ‰์ฐฝ์— Redo ์ž…๋ ฅ→ Main menu > Edit > Re..

IT์ง€์‹ 2025.06.16

[React] React.useState

โœ… React.useState๋ž€?useState๋Š” React ํ•จ์ˆ˜ํ˜• ์ปดํฌ๋„ŒํŠธ์—์„œ ์ƒํƒœ ๊ฐ’์„ ์„ ์–ธํ•˜๊ณ  ์ œ์–ดํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ํ•จ์ˆ˜์ž…๋‹ˆ๋‹ค.๐Ÿ“ฆ ๊ธฐ๋ณธ ๋ฌธ๋ฒ•const [state, setState] = React.useState(์ดˆ๊ธฐ๊ฐ’);๊ตฌ์„ฑ :ํ•ญ๋ชฉ์„ค๋ช…stateํ˜„์žฌ ์ƒํƒœ ๊ฐ’setState์ƒํƒœ๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๋Š” ํ•จ์ˆ˜์ดˆ๊ธฐ๊ฐ’state์˜ ์ดˆ๊ธฐ๊ฐ’ (์ˆซ์ž, ๋ฌธ์ž์—ด, ๋ฐฐ์—ด, ๊ฐ์ฒด ๋“ฑ ๊ฐ€๋Šฅ) ๐Ÿงช ์˜ˆ์ œimport React from 'react';function Counter() { const [count, setCount] = React.useState(0); // ์ดˆ๊ธฐ๊ฐ’ 0 return ( ํ˜„์žฌ ์นด์šดํŠธ: {count} setCount(count + 1)}>+1 );}๊ฒฐ๊ณผ:์ดˆ๊ธฐ ์ƒํƒœ co..

Front/React 2025.06.15

[js] ๊ฐ์ฒด์˜ ๊ตฌ์กฐ ๋ถ„ํ•ด ํ• ๋‹น

const user = { name: "Alice", age: 25 };const { name, age } = user;console.log(name); // "Alice"console.log(age); // 25๊ฐ์ฒด๋Š” ํ‚ค ์ด๋ฆ„ ๊ธฐ์ค€์œผ๋กœ ํ• ๋‹น๋ฉ๋‹ˆ๋‹ค.๋ณ€์ˆ˜ ์ด๋ฆ„์„ ๋ฐ”๊พธ๊ณ  ์‹ถ์„ ๋• ์ด๋ ‡๊ฒŒ ์”๋‹ˆ๋‹ค:const { name: userName } = user;console.log(userName); // "Alice"

Front/JS & jQuery 2025.06.13

[js] ๋ฐฐ์—ด์˜ ๊ตฌ์กฐ ๋ถ„ํ•ด ํ• ๋‹น

const arr = [10, 20, 30];const [a, b, c] = arr;console.log(a); // 10console.log(b); // 20console.log(c); // 30 ๋ฐฐ์—ด์˜ ์ˆœ์„œ์— ๋”ฐ๋ผ ๋ณ€์ˆ˜์— ๊ฐ’์ด ํ• ๋‹น๋ฉ๋‹ˆ๋‹ค.ํ•„์š” ์—†๋Š” ๊ฐ’์€ ์ƒ๋žตํ•  ์ˆ˜๋„ ์žˆ์–ด์š”:const [x, , z] = [1, 2, 3];console.log(x, z); // 1 3

Front/JS & jQuery 2025.06.12

JSX๋ž€

โœ… JSX๋ž€?JSX (JavaScript XML) ๋Š” JavaScript ์•ˆ์—์„œ HTML์ฒ˜๋Ÿผ ๋ณด์ด๋Š” ๋ฌธ๋ฒ•์ž…๋‹ˆ๋‹ค.์ฃผ๋กœ React์—์„œ UI๋ฅผ ๊ตฌ์„ฑํ•  ๋•Œ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.๐Ÿ“Œ ์ •์˜: JSX๋Š” JavaScript์— XML/HTML ๋ฌธ๋ฒ•์„ ๊ฒฐํ•ฉํ•œ ํ™•์žฅ ๋ฌธ๋ฒ•(Syntax Extension)๐Ÿงฉ ์™œ JSX๋ฅผ ์‚ฌ์šฉํ•˜๋Š”๊ฐ€?React๋Š” UI๋ฅผ ์ปดํฌ๋„ŒํŠธ ๋‹จ์œ„๋กœ ๊ตฌ์„ฑํ•˜๋Š”๋ฐ, JSX๋Š” ์ปดํฌ๋„ŒํŠธ์˜ ๊ตฌ์กฐ๋ฅผ ๋ณด๊ธฐ ์‰ฝ๊ฒŒ ํ‘œํ˜„ํ•ด์ค๋‹ˆ๋‹ค.์˜ˆ๋ฅผ ๋“ค์–ด:jsxconst element = Hello, world!;์œ„ ์ฝ”๋“œ๋Š” ๋ณด๊ธฐ์—” HTML ๊ฐ™์ง€๋งŒ ์‹ค์ œ๋กœ๋Š” JavaScript ์ฝ”๋“œ์ž…๋‹ˆ๋‹ค.Babel ๊ฐ™์€ ๋„๊ตฌ๊ฐ€ ์ด ์ฝ”๋“œ๋ฅผ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค:jsconst element = React.createElement('h1', null, 'Hello, worl..

IT์ง€์‹ 2025.06.11
728x90
๋ฐ˜์‘ํ˜•