๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

Lect & Tip/node, Angular, React21

๋ฆฌ์•กํŠธ) ๋ฐ˜์‘ํ˜• ๋„ค๋น„๊ฒŒ์ด์…˜ ๋ฐ” ๋ฐ ๋“œ๋กญ๋‹ค์šด ๋ฉ”๋‰ด ์ปดํฌ๋„ŒํŠธ ๊ตฌํ˜„ ๋ฐ˜์‘ํ˜• ๋„ค๋น„๊ฒŒ์ด์…˜ ๋ฐ” ๋ฐ ๋“œ๋กญ๋‹ค์šด ๋ฉ”๋‰ด ์ปดํฌ๋„ŒํŠธ ๊ตฌํ˜„ํ˜„๋Œ€ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ๋Š” ๋‹ค์–‘ํ•œ ๋””๋ฐ”์ด์Šค ํ™˜๊ฒฝ์— ๋งž์ถฐ UI๋ฅผ ์ตœ์ ํ™”ํ•˜๋Š” ๊ฒƒ์ด ๋งค์šฐ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ํŠนํžˆ, ๋ฐ˜์‘ํ˜• ๋„ค๋น„๊ฒŒ์ด์…˜ ๋ฐ”์™€ ๋“œ๋กญ๋‹ค์šด ๋ฉ”๋‰ด๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์›น์‚ฌ์ดํŠธ ๋‚ด์—์„œ ์‰ฝ๊ฒŒ ํƒ์ƒ‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋•๋Š” ํ•ต์‹ฌ ์š”์†Œ์ž…๋‹ˆ๋‹ค.์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ๋Š” ๋ฐ˜์‘ํ˜• ์›น ๋””์ž์ธ์„ ๊ณ ๋ คํ•œ ๋„ค๋น„๊ฒŒ์ด์…˜ ๋ฐ”์™€ ๋“œ๋กญ๋‹ค์šด ๋ฉ”๋‰ด์˜ UI/UX ๋””์ž์ธ ํŒจํ„ด๊ณผ ๊ตฌํ˜„ ๋ฐฉ๋ฒ•์„ ์ƒ์„ธํžˆ ์‚ดํŽด๋ณด๊ณ , ์‹ค์ œ ์ฝ”๋“œ ์˜ˆ์ œ์™€ ํ•จ๊ป˜ ๋‹จ๊ณ„๋ณ„ ๊ตฌํ˜„ ์ „๋žต์„ ์†Œ๊ฐœํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.๋ฐ˜์‘ํ˜• ๋„ค๋น„๊ฒŒ์ด์…˜ ๋ฐ”์˜ ํ•„์š”์„ฑ๊ณผ ๊ธฐ๋ณธ ์›์น™๋ฐ˜์‘ํ˜• ์›น ๋””์ž์ธ์€ ๋ฐ์Šคํฌํƒ‘, ํƒœ๋ธ”๋ฆฟ, ๋ชจ๋ฐ”์ผ ๋“ฑ ๋‹ค์–‘ํ•œ ํ™”๋ฉด ํฌ๊ธฐ์— ๋”ฐ๋ผ ์œ ๋™์ ์ธ ๋ ˆ์ด์•„์›ƒ์„ ์ ์šฉํ•˜๋Š” ๊ฒƒ์„ ๋ชฉํ‘œ๋กœ ํ•ฉ๋‹ˆ๋‹ค. ๋„ค๋น„๊ฒŒ์ด์…˜ ๋ฐ”๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์‚ฌ์ดํŠธ ์ „์ฒด๋ฅผ ํƒ์ƒ‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ค‘์š”ํ•œ ๋ฉ”๋‰ด๋“ค์„ ์ œ๊ณตํ•˜๋Š”๋ฐ, ๋ฐ˜์‘ํ˜•.. 2025. 8. 15.
React JS ๋ฐ์ดํ„ฐํ”ผ์ปค ์ตœ์†Œ/์ตœ๋Œ€ ๋‚ ์งœ ์„ค์ • ๊ฐ€์ด๋“œ React JS ๋ฐ์ดํ„ฐํ”ผ์ปค ์ตœ์†Œ/์ตœ๋Œ€ ๋‚ ์งœ ์„ค์ • ๊ฐ€์ด๋“œ์ตœ๊ทผ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ์—์„œ ์‚ฌ์šฉ์ž ์นœํ™”์ ์ธ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๋ฐ ์ค‘์š”ํ•œ ์š”์†Œ ์ค‘ ํ•˜๋‚˜๊ฐ€ ๋‚ ์งœ ์„ ํƒ ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค. React๋ฅผ ๋น„๋กฏํ•œ ์ตœ์‹  ํ”„๋ก ํŠธ์—”๋“œ ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ๋Š” ๋‹ค์–‘ํ•œ ๋‚ ์งœ ์„ ํƒ ์ปดํฌ๋„ŒํŠธ๋ฅผ ์ œ๊ณตํ•˜๊ณ  ์žˆ์œผ๋ฉฐ, ๊ทธ ์ค‘์—์„œ๋„ JavaScript ๊ธฐ๋ฐ˜์˜ ๋ฐ์ดํ„ฐํ”ผ์ปค๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์›ํ•˜๋Š” ๋‚ ์งœ ๋ฒ”์œ„๋ฅผ ์†์‰ฝ๊ฒŒ ์„ ํƒํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ค๋‹ˆ๋‹ค.์˜ค๋Š˜์€ React์—์„œ JS ๋ฐ์ดํ„ฐํ”ผ์ปค๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์ตœ์†Œ ๋‚ ์งœ์™€ ์ตœ๋Œ€ ๋‚ ์งœ๋ฅผ ์„ค์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์ž์„ธํ•˜๊ฒŒ ์•Œ์•„๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.๋ฐ์ดํ„ฐํ”ผ์ปค์˜ ํ•„์š”์„ฑ๊ณผ ๊ธฐ๋ณธ ๊ฐœ๋…์›น ํผ์ด๋‚˜ ์˜ˆ์•ฝ ์‹œ์Šคํ…œ, ์ผ์ • ๊ด€๋ฆฌ ๋“ฑ ์—ฌ๋Ÿฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ๋‚ ์งœ ์„ ํƒ ๊ธฐ๋Šฅ์€ ํ•„์ˆ˜์ ์ž…๋‹ˆ๋‹ค. ๋‹จ์ˆœํžˆ ์‚ฌ์šฉ์ž๊ฐ€ ์ž„์˜์˜ ๋‚ ์งœ๋ฅผ ์ž…๋ ฅํ•˜๋„๋ก ๋‘๋Š” ๋Œ€์‹ , ๋ฏธ๋ฆฌ ์ •ํ•ด์ง„ ๋ฒ”์œ„ ๋‚ด์—์„œ.. 2025. 2. 12.
๋ฆฌ์•กํŠธ api axios ์—‘์…€ ๋‹ค์šด๋กœ๋“œ ๋ฒ„ํŠผ ๊ตฌํ˜„ react.JS filesaver.saveAs javascript blob response.headers ๊ฐ’์—์„œ filename์ถ”์ถœํ•˜๊ธฐ ๋ฆฌ์•กํŠธ api axios ์—‘์…€ ๋‹ค์šด๋กœ๋“œ ๋ฒ„ํŠผ ๊ตฌํ˜„ react.JS filesaver.saveAs javascript blob response.headers ๊ฐ’์—์„œ filename์ถ”์ถœํ•˜๊ธฐ๋ฆฌ์•กํŠธ๋กœ ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋ฉด์„œ ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ์—‘์…€ ํŒŒ์ผ์„ ๋‹ค์šด๋กœ๋“œ ๋ฐ›๋Š” ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•ด์•ผ ํ•  ๊ฒฝ์šฐ๊ฐ€ ์ข…์ข… ์žˆ์Šต๋‹ˆ๋‹ค. ํŠนํžˆ API ํ˜ธ์ถœ ์‹œ Axios๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์•„์˜ค๊ณ , ๊ทธ ๋ฐ์ดํ„ฐ๋ฅผ ํŒŒ์ผ๋กœ ์ €์žฅํ•˜๋Š” ๊ณผ์ •์—์„œ ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ์ œ์•ฝ๊ณผ ์ด์Šˆ๋ฅผ ๋งˆ์ฃผํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ๋Š” ๋ฆฌ์•กํŠธ ํ™˜๊ฒฝ์—์„œ Axios๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์—‘์…€ ํŒŒ์ผ ๋‹ค์šด๋กœ๋“œ ๋ฒ„ํŠผ์„ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•๊ณผ ํ•จ๊ป˜, response.headers์— ํฌํ•จ๋œ ํŒŒ์ผ๋ช…์„ ์ถ”์ถœํ•˜๋Š” ๊ผผ์ˆ˜์— ๋Œ€ํ•ด ์ž์„ธํžˆ ๋‹ค๋ฃจ๊ณ ์ž ํ•ฉ๋‹ˆ๋‹ค.๋ฆฌ์•กํŠธ ํ”„๋กœ์ ํŠธ ๊ฐœ์š” ๋ฐ ๊ตฌํ˜„ ๋ฐฐ๊ฒฝ๋ฆฌ์•กํŠธ๋Š” ๋‹จ์ˆœํ•œ ์ปดํฌ๋„ŒํŠธ ๊ธฐ๋ฐ˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ.. 2025. 2. 11.
[React] SPA ํŽ˜์ด์ง€ ์ด๋™ ์‹œ ์Šคํฌ๋กค ๋งจ ์œ„ ์œ ์ง€ ํ•˜๋Š” ๋ฐฉ๋ฒ• [React] SPA ํŽ˜์ด์ง€ ์ด๋™ ์‹œ ์Šคํฌ๋กค ๋งจ ์œ„ ์œ ์ง€ ํ•˜๋Š” ๋ฐฉ๋ฒ•์ตœ๊ทผ ์›น ๊ฐœ๋ฐœ ํŠธ๋ Œ๋“œ์—์„œ ์‹ฑ๊ธ€ ํŽ˜์ด์ง€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜(SPA)์€ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜(UX)์„ ๊ทน๋Œ€ํ™”ํ•˜๊ธฐ ์œ„ํ•ด ๋งŽ์ด ํ™œ์šฉ๋˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ํŠนํžˆ React์™€ ๊ฐ™์€ ํ”„๋ก ํŠธ์—”๋“œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ SPA๋ฅผ ๊ตฌ์ถ•ํ•  ๋•Œ, ํŽ˜์ด์ง€ ๊ฐ„ ์ „ํ™˜์ด ๋น ๋ฅด๊ณ  ๋ถ€๋“œ๋Ÿฌ์šด ์ „ํ™˜ ํšจ๊ณผ๋ฅผ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์ด ํฐ ์žฅ์ ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด๋Ÿฌํ•œ SPA์˜ ํŠน์„ฑ์ƒ ํŽ˜์ด์ง€ ์ด๋™ ์‹œ ์Šคํฌ๋กค ์œ„์น˜๊ฐ€ ์ด์ „ ํŽ˜์ด์ง€์˜ ์œ„์น˜๋ฅผ ๊ทธ๋Œ€๋กœ ์œ ์ง€ํ•˜๋Š” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ณธ ํฌ์ŠคํŒ…์—์„œ๋Š” React ํ™˜๊ฒฝ์—์„œ SPA ํŽ˜์ด์ง€ ์ด๋™ ์‹œ ์Šคํฌ๋กค์„ ํ•ญ์ƒ ๋งจ ์œ„๋กœ ์œ ์ง€ํ•˜๋Š” ๋‹ค์–‘ํ•œ ๋ฐฉ๋ฒ•๊ณผ ๊ทธ ๊ตฌํ˜„ ์‚ฌ๋ก€์— ๋Œ€ํ•ด ์‹ฌ๋„ ์žˆ๊ฒŒ ๋‹ค๋ฃจ์–ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.SPA์™€ ์Šคํฌ๋กค ๋ฌธ์ œ์˜ ์ดํ•ดSPA๋Š” ํ•œ ๋ฒˆ์˜ ๋กœ๋”ฉ์œผ๋กœ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ „์ฒด๋ฅผ ๋ถˆ๋Ÿฌ.. 2025. 2. 10.
[React] REST API, AXIOS๋กœ ๋ฐ›์•„์˜จ Array ๊ฐ์ฒด๋ฅผ mapํ•จ์ˆ˜ ํ˜ธ์ถœ์ด ๋ถˆ๊ฐ€๋Šฅํ• ๋•Œ [React] REST API, AXIOS๋กœ ๋ฐ›์•„์˜จ Array ๊ฐ์ฒด๋ฅผ mapํ•จ์ˆ˜ ํ˜ธ์ถœ์ด ๋ถˆ๊ฐ€๋Šฅํ• ๋•Œ์ด ๊ธ€์—์„œ๋Š” React๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ REST API๋กœ๋ถ€ํ„ฐ Axios๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์•„์˜ฌ ๋•Œ ๋ฐœ์ƒํ•˜๋Š” ๋ฐฐ์—ด(Array) ๊ฐ์ฒด์˜ map ํ•จ์ˆ˜ ํ˜ธ์ถœ ์˜ค๋ฅ˜์— ๋Œ€ํ•ด ์ƒ์„ธํžˆ ์„ค๋ช…ํ•˜๊ณ , ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๊ฐ„๋‹จํ•˜๋ฉด์„œ๋„ ํšจ๊ณผ์ ์ธ ๋ฐฉ๋ฒ•์„ ์†Œ๊ฐœํ•˜๊ณ ์ž ํ•ฉ๋‹ˆ๋‹ค. ํŠนํžˆ ๋น„๋™๊ธฐ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ์™€ ๊ด€๋ จํ•˜์—ฌ Promise ๊ฐ์ฒด๊ฐ€ ํ•ด๊ฒฐ๋˜๊ธฐ ์ „์— ์ปดํฌ๋„ŒํŠธ๊ฐ€ ๋ Œ๋”๋ง๋˜์–ด ๋ฐœ์ƒํ•˜๋Š” ์˜ค๋ฅ˜์˜ ์›์ธ๊ณผ ํ•ด๊ฒฐ์ฑ…์„ ์ค‘์ ์ ์œผ๋กœ ๋‹ค๋ฃจ๋ฉฐ, ๋กœ๋”ฉ ์ƒํƒœ ๊ด€๋ฆฌ ๋ฐ ์กฐ๊ฑด๋ถ€ ๋ Œ๋”๋ง์„ ํ™œ์šฉํ•œ ์ ‘๊ทผ๋ฒ•์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•ฉ๋‹ˆ๋‹ค.๋„์ž…๋ถ€React๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด์„œ ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์•„์™€ ๋ Œ๋”๋งํ•˜๋Š” ๊ณผ์ •์€ ๋งค์šฐ ์ผ๋ฐ˜์ ์ž…๋‹ˆ๋‹ค. ๋งŽ์€ ๊ฐœ๋ฐœ์ž๋“ค์ด Axios๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ REST API์™€ ํ†ต์‹ ํ•˜๋ฉฐ ๋ฐ์ดํ„ฐ.. 2024. 10. 18.
React ์‹คํ–‰ ์˜ค๋ฅ˜: npm ERR! errno -4058 ํ•ด๊ฒฐ ๋ฐฉ๋ฒ• React ์‹คํ–‰ ์˜ค๋ฅ˜ - npm ERR! errno -4058 ํ•ด๊ฒฐ ๋ฐฉ๋ฒ• React ํ”„๋กœ์ ํŠธ์—์„œ ๋ฐœ์ƒํ•˜๋Š” npm ์˜ค๋ฅ˜์˜ ์›์ธ๊ณผ ํ•ด๊ฒฐ์ฑ… React๋ฅผ ์‚ฌ์šฉํ•˜๋ฉฐ ์ข…์ข… ๋งˆ์ฃผ์น˜๋Š” ๋ฌธ์ œ ์ค‘ ํ•˜๋‚˜๋Š” npm ERR! errno -4058 ์˜ค๋ฅ˜์ž…๋‹ˆ๋‹ค. ์ด ์˜ค๋ฅ˜๋Š” React ํ”„๋กœ์ ํŠธ๋ฅผ ์‹คํ–‰ํ•  ๋•Œ npm ๊ด€๋ จ ๋ฌธ์ œ๋กœ ์ธํ•ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ธ€์—์„œ๋Š” ์ด ์˜ค๋ฅ˜์˜ ์›์ธ๊ณผ ๋‹ค์–‘ํ•œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์„ ์ž์„ธํžˆ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์˜ค๋ฅ˜์˜ ์›์ธ ํŒŒ์•… npm ERR! errno -4058 ์˜ค๋ฅ˜๋Š” ์ฃผ๋กœ ํŒŒ์ผ ์‹œ์Šคํ…œ ๊ด€๋ จ ๋ฌธ์ œ์—์„œ ๋น„๋กฏ๋ฉ๋‹ˆ๋‹ค. ์ด๋Š” ํŒŒ์ผ ๋˜๋Š” ๋””๋ ‰ํ† ๋ฆฌ์— ์ ‘๊ทผํ•  ์ˆ˜ ์—†๊ฑฐ๋‚˜, ํ•„์š”ํ•œ ํŒŒ์ผ์ด ์—†์„ ๋•Œ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ๊ตฌ์ฒด์ ์ธ ์›์ธ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค: ์ž˜๋ชป๋œ ํŒŒ์ผ ๊ฒฝ๋กœ: ํ”„๋กœ์ ํŠธ ๋‚ด์˜ ํŒŒ์ผ์ด๋‚˜ ๋””๋ ‰ํ† ๋ฆฌ ๊ฒฝ๋กœ๊ฐ€ ์ž˜๋ชป ์„ค์ •๋˜์—ˆ์„ ๋•Œ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ๊ถŒํ•œ ๋ถ€.. 2023. 11. 28.