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

728x90

๋„์ „์„ ๋ฐฅ๐Ÿ™ ๋จน๋“ฏ์ด ํ•˜๋Š” ๊ฐœ๋ฐœ์ž

(84)
๊ฒฝ์˜์ •๋ณด์‹œ๊ฐํ™”๋Šฅ๋ ฅ Bํ˜• ๊ธฐ์ถœ - ๋ฐ์ดํ„ฐ ํ•ด์„ ๋ฐ ํ™œ์šฉ 1. ๋น„์ •ํ˜• ๋ฐ์ดํ„ฐ ์ •ํ•ด์ง„ ๊ทœ๊ฒฉ์ด ์—†์–ด ๊ฐ’์˜ ์˜๋ฏธ๋ฅผ ์‰ฝ๊ฒŒ ํŒŒ์•…ํ•˜๊ธฐ ํž˜๋“ค๋‹ค. ๋น„์ •ํ˜• ํŠน์„ฑ์œผ๋กœ ์ธํ•ด ํŠน์ • ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ ๊ฒ€์ƒ‰์ด ์–ด๋ ต๋‹ค. ํŠน์ • ์Šคํ‚ค๋งˆ๊ฐ€ ์—†๋Š” NoSQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ์‚ฌ์šฉ๋œ๋‹ค. 2. ์ค‘์•™๊ฐ’ [ 40, 20, 10, 30, NULL, 50, 60 ] NULL์„ ์ œ์™ธํ•˜๊ณ  ๊ณ„์‚ฐํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ์‹œ 10, 20, 30, 40, 50 ,60 ์œผ๋กœ ๋ฐ์ดํ„ฐ์˜ ๊ฐœ์ˆ˜๊ฐ€ ์ง์ˆ˜(6๊ฐœ) ์ž„์œผ๋กœ ์ค‘์•™๊ฐ’์€ ์ค‘๊ฐ„ ๋‘ ๊ฐ’์˜ ํ‰๊ท  = (30 + 40) / 2 => 35 3. ํ™•๋ฅ  ๋ถ„ํฌ : ๋ฏธ๋ž˜์— ๋ฐœ์ƒํ•  ์‚ฌ๊ฑด์— ๋Œ€ํ•ด ํ™•๋ฅ ์„ ๋‚˜์—ดํ•œ ๊ฒƒ ๊ท ๋“ฑ ๋ถ„ํฌ (์ด์‚ฐ ๊ท ๋“ฑ๋ถ„ํฌ, ์—ฐ์† ๊ท ๋“ฑ๋ถ„ํฌ) : ๊ณผ๊ฑฐ์˜ ๊ฒฝํ—˜์ด ๋ฏธ๋ž˜๋ฅผ ์˜ˆ์ธกํ•˜๋Š”๋ฐ ์–ด๋–ค ์˜ํ–ฅ๋„ ๋ฏธ์น˜์ง€ ์•Š์œผ๋ฉฐ, ๋‚˜ํƒ€๋‚  ๊ฐ€๋Šฅ์„ฑ์ด ๋ชจ๋‘ ๋™์ผํ•œ ๋ถ„ํฌ ์ด์‚ฐ ๊ท ๋“ฑ ๋ถ„ํฌ : ์ •์˜๋œ ๊ตฌ๊ฐ„์—์„œ ํ™•๋ฅ  ๋ถ„..
๊ฒฝ์˜์ •๋ณด์‹œ๊ฐํ™”๋Šฅ๋ ฅ Aํ˜• ๊ธฐ์ถœ - ๊ฒฝ์˜์ •๋ณด ์ผ๋ฐ˜ 2. ๋ฐœ์ƒ์ฃผ์˜ ์›์น™๋ชจ๋“  ์ˆ˜์ต๊ณผ ๋น„์šฉ์€ ๊ทธ๊ฒƒ์ด ๋ฐœ์ƒํ•œ ๊ธฐ๊ฐ„์— ์ •๋‹นํ•˜๊ฒŒ ๋ฐฐ๋ถ„๋˜์–ด์•ผ ํ•œ๋‹ค๋Š” ์›์น™์žฌ๋ฌด์ œํ‘œ์˜ ์ •ํ™•์„ฑ๊ณผ ์‹ ๋ขฐ์„ฑ์„ ๋ณด์žฅํ•˜๋Š”๋ฐ ์ค‘์š”ํ•œ ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค. ์ˆ˜์ต๋น„์šฉ๋Œ€์‘ ์›์น™: ์–ด๋–ค ๋น„์šฉ์ด ๋ฐœ์ƒํ–ˆ๋Š”์ง€์™€ ๊ทธ ๋น„์šฉ์ด ์–ด๋–ค ์ˆ˜์ต๊ณผ ๊ด€๋ จ์ด ์žˆ๋Š”์ง€๋ฅผ ์ดํ•ดํ•˜๋Š” ์›์น™, ๋น„์šฉ์ด ์–ด๋–ค ํ™œ๋™์ด๋‚˜ ํ”„๋กœ์ ํŠธ์— ๋ฐœ์ƒํ–ˆ๋Š”์ง€, ๊ทธ ๋น„์šฉ์ด ๊ทธ ํ™œ๋™์ด๋‚˜ ํ”„๋กœ์ ํŠธ๋กœ ์–ป๋Š” ์ˆ˜์ต๊ณผ ์—ฐ๊ฒฐ๋˜๋Š”์ง€๋ฅผ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. ๋น„์šฉ์ด๋‚˜ ํˆฌ์ž์— ๋Œ€ํ•œ ๊ฒฐ์ •์„ ๋‚ด๋ฆด ๋•Œ, ์–ด๋–ค ๊ฒฐ๊ณผ๋ฅผ ๊ธฐ๋Œ€ํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ์ดํ•ดํ•˜๋Š”๋ฐ ๋„์šฐ๋ฉฐ, ๋น„์ฆˆ๋‹ˆ์Šค๋‚˜ ๊ฐœ์ธ์ด ์ž์›์„ ํšจ์œจ์ ์œผ๋กœ ํ™œ์šฉํ•˜๊ณ  ๊ฐ€์น˜๋ฅผ ์ตœ๋Œ€ํ™”ํ•ฉ๋‹ˆ๋‹ค. 3. ์ฃผ๊ฐ€์ˆœ์ž์‚ฐ๋น„์œจ: ์ฃผ๊ฐ€๊ฐ€ ์žฅ๋ถ€๊ฐ€์˜ ๋ช‡ ๋ฐฐ๋กœ ํ‰๊ฐ€๋˜๊ณ  ์žˆ๋Š”์ง€ ์ธก์ •ํ•˜๋Š”๋ฐ ์‚ฌ์šฉํ•˜๋Š” ์žฌ๋ฌด ๋น„์œจ๊ธฐ์—…์˜ ์‹œ๊ฐ€์ด์•ก์„ ์ˆœ์ž์‚ฐ(์ž์‚ฐ - ๋ถ€์ฑ„)์— ๋Œ€ํ•œ ๋น„์œจ๋กœ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.์ผ๋ฐ˜์ ์œผ๋กœ ์ฃผ๊ฐ€์ˆœ์ž์‚ฐ๋น„์œจ์ด ๋†’์„..
๊ฒฝ์˜์ •๋ณด์‹œ๊ฐํ™”๋Šฅ๋ ฅ Bํ˜• ๊ธฐ์ถœ - ๊ฒฝ์˜์ •๋ณด ์ผ๋ฐ˜ ๊ฒฝ์˜์ •๋ณด ์ผ๋ฐ˜ 1. ๊ธฐ์—… ๊ฒฝ์˜์„ ์œ„ํ•œ ํ•˜์œ„ ๋ถ€๋ฌธ ๋ฐ ์ฃผ์š” ํ™œ๋™์ธ์ ์ž์›๊ด€๋ฆฌ : ์ธ๋ ฅ ์šด์˜ ๊ณ„ํš ์ˆ˜๋ฆฝ ๋ฐ ์ง๋ฌด ๋ถ„์„๊ณผ ํ‰๊ฐ€๋งˆ์ผ€ํŒ… : ์‹œ์žฅ ํ™˜๊ฒฝ๊ณผ ๊ณ ๊ฐ ๋ถ„์„ ๋ฐ STP ์ „๋žต ์‹คํ–‰์šด์˜๊ด€๋ฆฌ : ์ œํ’ˆ ์›๊ฐ€, ํ’ˆ์งˆ, ๋‚˜ํ’ˆ ๊ด€๋ฆฌ ๋ฐ ์žฌ๊ณ  ๊ด€๋ฆฌํšŒ๊ณ„๊ด€๋ฆฌ : ์žฌ๋ฌด์ƒํƒœ๋ฅผ ํŒŒ์•…ํ•˜๊ณ  ์žฌ๋ฌด์„ฑ๊ณผ๋ฅผ ํ–ฅ์ƒ์‹œํ‚ค๊ธฐ ์œ„ํ•ด ์ˆ˜ํ–‰์žฌ๋ฌด ํšŒ๊ณ„ :์žฌ๋ฌด์ƒํƒœ ๊ธฐ๋ก์™ธ๋ถ€ ์ดํ•ด๊ด€๊ณ„์ž์—๋“ค์—๊ฒŒ ๋ณด๊ณ ์ œ๋ฌด์ œํ‘œ๋ฅผ ์ž‘์„ฑ, ์†์ต๊ณ„์‚ฐ์„œ, ๋Œ€์ฐจ๋Œ€์กฐํ‘œ, ํ˜„๊ธˆํ๋ฆ„ํ‘œ๋“ฑ์˜ ๋ณด๊ณ ์„œ ์ƒ์„ฑ์ œ๋ฌด์ œํ‘œ : ๊ธฐ์—…์ด ๋ˆ์„ ์–ด๋–ป๊ฒŒ ๋ฒŒ๊ณ  ์“ฐ๋Š”์ง€ ๋ณด์—ฌ์ฃผ๋Š” ๋ฌธ์„œ์†์ต๊ณ„์‚ฐ์„œ (Income Statement):๊ธฐ์—…์˜ ์ˆ˜์ต๊ณผ ๋น„์šฉ์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.ํŠน์ • ๊ธฐ๊ฐ„ ๋™์•ˆ์˜ ๋งค์ถœ์•ก๊ณผ ๋น„์šฉ์„ ๋น„๊ตํ•˜์—ฌ ์ˆœ์ด์ต(๋˜๋Š” ์†์‹ค)์„ ๊ณ„์‚ฐํ•ฉ๋‹ˆ๋‹ค.ex) A์ œํ’ˆ์„ ํŒ”์•˜์„ ๋•Œ ๋ฐœ์ƒํ•˜๋Š” ์ˆ˜์ต๊ณผ ๊ทธ ์ œํ’ˆ์„ ๋งŒ๋“œ๋Š” ๋ฐ ๋“ค์–ด๊ฐ€๋Š” ๋น„์šฉ๋Œ€์ฐจ๋Œ€์กฐํ‘œ (Ba..
๋ Œ๋”๋ง๊ณผ DOM(Document Object Model) ์›น ๋ธŒ๋ผ์šฐ์ € ๋ Œ๋”๋ง , React์˜ ๋ Œ๋”๋ง ์›น ๋ธŒ๋ผ์šฐ์ € ๋ Œ๋”๋ง ์›น ํŽ˜์ด์ง€๋ฅผ ํ™”๋ฉด์— ํ‘œ์‹œํ•˜๋Š” ๊ณผ์ • HTML, CSS, Javascript๊ฐ€ ํ•จ๊ป˜ ๋™์ž‘ํ•˜์—ฌ ์ด๋ฃจ์–ด์ง‘๋‹ˆ๋‹ค. HTML ๋ฌธ์„œ๋ฅผ ์ฝ์–ด DOM ํŠธ๋ฆฌ ์ƒ์„ฑ โ–ผ CSS ๋ฌธ์„œ๋ฅผ ์ฝ์–ด CSSOM ํŠธ๋ฆฌ ์ƒ์„ฑ โ–ผ DOM + CSSOM = ๋ Œ๋” ํŠธ๋ฆฌ ์ƒ์„ฑ โ–ผ ๋ Œ๋”ํŠธ๋ฆฌ๋กœ ๋ ˆ์ด์•„์›ƒ์„ ๊ตฌ์„ฑ, ํ™”๋ฉด ์š”์†Œ๋ฅผ ์น ํ•ฉ๋‹ˆ๋‹ค.(๋ฐฐ๊ฒฝ, ํ…Œ๋‘๋ฆฌ, ๊ธ€์ž) ๋ฌธ์„œํŒŒ์‹ฑ โ–ถ ์Šคํƒ€์ผ ๊ณ„์‚ฐ โ–ถ ๋ ˆ์ด์•„์›ƒ โ–ถ ํŽ˜์ธํŒ… ์œ„ ๊ณผ์ •์€ ์‚ฌ์šฉ์ž๊ฐ€ ์›นํŽ˜์ด์ง€๋ฅผ ์š”์ฒญํ• ๋•Œ๋งˆ๋‹ค ์‹คํ–‰๋˜๊ณ , ์‚ฌ์šฉ์ž-๋ธŒ๋ผ์šฐ์ € ๊ฐ„์˜ ์ƒํ˜ธ์ž‘์šฉ๋”ฐ๋ผ ๋‹ค์‹œ ์ˆ˜ํ–‰๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ธŒ๋ผ์šฐ์ €๋Š” ๋ Œ๋”๋ง์„ ์ตœ์ ํ™”ํ•˜๊ธฐ ์œ„ํ•ด, ์˜ˆ์ธก ๋ Œ๋”๋ง, ๋น„๋™๊ธฐ ์Šคํฌ๋ฆฝํŒ…, ์›น ์›Œ์ปค ๊ธฐ์ˆ ์„ ํ™œ์šฉํ•ด ์„ฑ๋Šฅ ํ–ฅ์ƒ๊ณผ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜ ์ตœ์ ํ™”๋ฅผ ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. React ๋ Œ๋”๋ง ๊ณผ์ • Virtu..
[์›ํ‹ฐ๋“œ ํ”„๋ฆฌ์˜จ๋ณด๋”ฉ] ํฌํŠธํด๋ฆฌ์˜ค ์ž‘์„ฑ์„ ์œ„ํ•œ ๋ฆฌ์•กํŠธ ํ”„๋กœ์ ํŠธ ๊ณ ๋„ํ™” - 4ํšŒ์ฐจ ์˜ค๋Š˜์˜ Agenda๋Š” ์„ฑ๋Šฅ๊ณผ ์ตœ์ ํ™”๋ฅผ ํ•˜๋Š” ๊ตฌ์ฒด์ ์ธ ๋ฐฉ๋ฒ• ์ด๋ฏธ์ง€ ์ตœ์ ํ™”, ์ฝ”๋“œ ์Šคํ”Œ๋ฆฌํŒ…, ์ง€๋‚œ ๊ฐ•์˜๋•Œ, ์„ฑ๋Šฅ์„ ์–ด๋–ป๊ฒŒ ์ธก์ •ํ•˜๋Š”์ง€ ๋ฐฐ์› ๋‹ค๋ฉด, ์ด๋ฒˆ ๊ฐ•์˜์—๋Š” ์„ฑ๋Šฅ์„ ์–ด๋–ป๊ฒŒ ๊ฐœ์„ ํ•  ์ˆ˜ ์žˆ์„์ง€๋ฅผ ๋ฐฐ์› ์Šต๋‹ˆ๋‹ค! ์ด๋ฏธ์ง€ ์ตœ์ ํ™”, ์ด๋ฏธ์ง€ ์šฉ๋Ÿ‰์ด ๋„ˆ๋ฌด ํฌ๋‹ค๋ฉด, ๋กœ๋”ฉ๋„ ์˜ค๋ž˜ ๊ฑธ๋ฆฌ๊ณ  ๋ธŒ๋ผ์šฐ์ €์— ๊ณผ๋ถ€ํ•˜๊ฐ€ ๊ฑธ๋ฆฌ๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์Šคํ† ๋ฆฌ์ง€์— ํ™”๋ฉด์— ํ•„์š”ํ•œ ์‚ฌ์ด์ฆˆ๋ณ„๋กœ ์ด๋ฏธ์ง€๋ฅผ ์ €์žฅํ•˜๊ณ , ํ•ด๋‹น ์˜์—ญ์— ํฌ๊ธฐ์˜ ๋งž๋Š” URL๋ฅผ ๋„˜๊ฒจ์ฃผ๋Š” ๊ฒƒ์ด ์ข‹๋‹ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฏธ์ง€ ํŒŒ์ผํ™•์žฅ์ž๋Š” [svg, png, webp] ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ €ํฌ ํ”„๋กœ์ ํŠธ์—์„  svg ํŒŒ์ผ์€ ๋”ฐ๋กœ ํ”„๋ก ํŠธ์—”๋“œ ํ”„๋กœ์ ํŠธ์— ์ฝ”๋“œ๋กœ ์ €์žฅ(local)ํ•˜์—ฌ ์‚ฌ์šฉํ•˜๊ณ , ๋Œ€๋‹ค์ˆ˜์˜ ์ด๋ฏธ์ง€ ํŒŒ์ผ์€ ์„œ๋ฒ„์—์„œ ๋ฐ›์€ png ํŒŒ์ผ์ด์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ํ•ด๋‹น ์ˆ˜์—…์ดํ›„ ์ด๋ฏธ์ง€ ํŒŒ์ผ๋“ค์„ webp๋กœ ์ˆ˜์ •ํ–ˆ๋Š”๋ฐ์š”..
[์›ํ‹ฐ๋“œ ํ”„๋ฆฌ์˜จ๋ณด๋”ฉ] ํฌํŠธํด๋ฆฌ์˜ค ์ž‘์„ฑ์„ ์œ„ํ•œ ๋ฆฌ์•กํŠธ ํ”„๋กœ์ ํŠธ ๊ณ ๋„ํ™” - 3ํšŒ์ฐจ ์˜ค๋Š˜์˜ Agenda๋Š” ์„ฑ๋Šฅ๊ณผ ์ตœ์ ํ™”! Lighthouse : ์›น ์„ฑ๋Šฅ์„ ๋ถ„์„ํ•˜๋Š” ์˜คํ”ˆ ์†Œ์Šค ์„ฑ๋Šฅ ๋ถ„์„, ์ ‘๊ทผ์„ฑ ๊ฒ€์‚ฌ, SEO ํ‰๊ฐ€, PWQ ๊ธฐ์ค€ ํ‰๊ฐ€๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. Lighthouse๋Š” ๊ฐœ๋ฐœ์ž ๋„๊ตฌ(F12)์—์„œ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค Ligthhouse ํŽ˜์ด์ง€ ๋กœ๋“œ๋ฅผ ๋ถ„์„ํ•˜๊ธฐ ์œ„ํ•ด, [ ์ค‘๋ณต ๋ชจ๋“ˆ ์ œ๊ฑฐ → ๋นŒ๋“œ → ์‹œํฌ๋ฆฟ ๋ชจ๋“œ ์‹คํ–‰ → Lighthouse ์‹คํ–‰ ] ์ˆœ์„œ๋กœ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. $ npm dedupe : npm ํŒจํ‚ค์ง€ ๋งค๋‹ˆ์ €์—์„œ ์ค‘๋ณต๋œ ์˜์กด์„ฑ์„ ์ค„์ด๋Š” ๋ช…๋ น์–ด node_modules ๋””๋ ‰ํ† ๋ฆฌ์—์„œ ์ค‘๋ณต๋œ ๋ชจ๋“ˆ์„ ์ œ๊ฑฐํ•ด ํ”„๋กœ์ ํŠธ ํฌ๊ธฐ๋ฅผ ์ค„์ž…๋‹ˆ๋‹ค. ( yarn์„ ์‚ฌ์šฉํ•˜์‹œ๋ฉด, ์ž์ฒด์ ์œผ๋กœ ์˜์กด์„ฑ ํ•ด๊ฒฐ ๋ฐ ํŠธ๋ฆฌ๊ตฌ์กฐ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ๊ด€๋ฆฌํ•ด ์ค‘๋ณต๋œ ๋ชจ๋“ˆ์„ ์ตœ์†Œํ™”ํ•œ๋‹ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค) $ yarn build production bu..
[์›ํ‹ฐ๋“œ ํ”„๋ฆฌ์˜จ๋ณด๋”ฉ] ํฌํŠธํด๋ฆฌ์˜ค ์ž‘์„ฑ์„ ์œ„ํ•œ ๋ฆฌ์•กํŠธ ํ”„๋กœ์ ํŠธ ๊ณ ๋„ํ™” - 1ํšŒ์ฐจ ์˜ค๋Š˜์˜ Agenda๋Š” 1. ์ง€์—ญ๋ณ€์ˆ˜์™€ ์ „์—ญ๋ณ€์ˆ˜ 2. Context API, Redux, Recoil, Zustand 3. React Query 1. ์ง€์—ญ๋ณ€์ˆ˜ vs ์ „์—ญ๋ณ€์ˆ˜ ์ œ ํ”„๋กœ์ ํŠธ์—์„œ๋Š” [ Container, Presenter ๋ฐฉ์‹+ redux ] ๋ฅผ ์‚ฌ์šฉํ•ด์™”์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๋ฐ์ดํ„ฐ๋ฅผ props๋กœ ๋„˜๊ฒจ์ฃผ์–ด์•ผํ• ์ง€, redux๋กœ ์ €์žฅํ•ด์•ผํ• ์ง€ ๊ณ ๋ฏผ์ด ๋งŽ์ด ๋˜์—ˆ๋Š”๋ฐ, ์˜ค๋Š˜ ๊ฐ•์˜๋ฅผ ๋“ค์œผ๋ฉด์„œ ๊ทธ ๊ณ ๋ฏผ์„ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์—ˆ์–ด์š”.๐Ÿคฉ 2depts์ด์ƒ ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌํ•ด์•ผํ• ๋• redux๋ฅผ ์‚ฌ์šฉํ•ด๋ด์•ผ๊ฒ ์Šต๋‹ˆ๋‹ค~ Container, Presenter ํŒจํ„ด Flux && Redux 2. Context API, Redux, Recoil, Zustand ํ”„๋กœ์ ํŠธ์—์„œ redux๋งŒ ์‚ฌ์šฉํ•ด์„œ Context API ๋‚ด์šฉ์„ ์˜ค๋žœ๋งŒ์— ๋“ค์œผ๋‹ˆ ์ƒ์†Œํ•˜..
redux-toolkit ๊ฐœ๋… ์ •๋ฆฌ, ๊ธฐ๋ณธ ๋ฌธ๋ฒ• redux toolkit : redux ๋กœ์ง์„ ์ž‘์„ฑํ•˜๊ธฐ ์œ„ํ•œ ํ‘œ์ค€ ๋ฐฉ์‹ (๋ณด์ผ๋Ÿฌ ํ”Œ๋ ˆ์ดํŠธ ์ œ๊ฑฐ) redux์™€ ๋น„๊ตํ•ด๋ณด๋ฉด, - ์Šคํ† ์–ด ์„ค์ •์„ ํ•œ๋ฒˆ์˜ ํ•จ์ˆ˜ ํ˜ธ์ถœ๋กœ ๋‹จ์ˆœํ™” - ์šฐ๋ฐœ์ ์ธ ์ƒํƒœ ๋ณ€์ด๋ฅผ ์ œ๊ฑฐ - ์ˆ˜๋™์œผ๋กœ ์•ก์…˜ ์ƒ์„ฑ์ž, ์•ก์…˜ ํƒ€์ž… ์ž‘์„ฑํ•  ํ•„์š”๊ฐ€ ์—†์Œ createSlice() : ์ƒํƒœ ์ด๋ฆ„๊ณผ ์ƒํƒœ ์ดˆ๊ธฐ๊ฐ’, ๋ฆฌ๋“€์„œ ํ•จ์ˆ˜๋“ค๋กœ ์ด๋ฃจ์–ด์ง„ ๊ฐ์ฒด๋ฅผ ๋ฐ›์•„, ๊ทธ์— ๋งž๋Š” [์•ก์…˜ ์ƒ์„ฑ์ž + ์•ก์…˜ ํƒ€์ž…] ์„ ํฌํ•จํ•œ ๋ฆฌ๋“€์„œ ์ƒ์„ฑ createSelector : Reselect ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—์„œ ๋‹ค์‹œ ์ต์ŠคํฌํŠธํ•ด์„œ ์“ฐ๊ธฐ ์‰ฝ๊ฒŒ ํ•ด์ค€๋‹ค. createAction() : ์ฃผ์–ด์ง„ ์•ก์…˜ ํƒ€์ž… ๋ฌธ์ž์—ด์„ ์ด์šฉํ•ด ์•ก์…˜ ์ƒ์ƒ์ž ํ•จ์ˆ˜ ์ƒ์„ฑ - ํ•จ์ˆ˜ ์ž์ฒด์— toString() ์ด ํฌํ•จ๋˜์–ด ํƒ€์ž… ์ƒ์ˆ˜๊ฐ€ ํ•„์š”ํ•œ ๊ณณ์—์„œ ํ™œ์šฉ ๊ฐ€๋Šฅ configureStore(..
Cache / Cookie / Session / Web storage / Proxy ์ •๋ฆฌ ์ฟ ํ‚ค (Cookie) ๋ฐฉ๋ฌธํ•œ ์›น์‚ฌ์ดํŠธ์—์„œ ์‚ฌ์šฉ์ž๋ฅผ ๊ธฐ์–ตํ•  ์ˆ˜ ์žˆ๋„๋ก ์‚ฌ์šฉ์ž ๋ธŒ๋ผ์šฐ์ €์— ๋ฐ์ดํ„ฐ ์ƒ์„ฑ ์บ์‹œ (CACHE) ์›น ์‚ฌ์ดํŠธ ๋ฆฌ์†Œ์Šค(img, html ๋“ฑ)์„ ๋ธŒ๋ผ์šฐ์ €์— ์ €์žฅํ•ด ๋” ๋น ๋ฅด๊ฒŒ ๋กœ๋“œ๋˜๋„๋ก ํ•จ. ๋ธŒ๋ผ์šฐ์ €๋‚˜ ์ค‘๊ณ„์„œ๋ฒ„์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. ์›น ๋ธŒ๋ผ์šฐ์ € ๋‚ด์šฉ ๊ฐฑ์‹ ์„ ๊ฐ์ง€ํ•˜์ง€ ๋ชปํ•ด ์ƒˆ๋กœ๊ณ ์นจ์„ ํ•ด์ค˜์•ผํ•จ. ์ฟ ํ‚ค (Cookie) ์ •๋ณด๋ฅผ ์œ ์ง€ํ•  ์ˆ˜ ์—†๋Š” http ๋‹จ์ ์„ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์ฟ ํ‚ค ๋„์ž… ์ง€์›Œ์ง€๊ฑฐ๋‚˜, ๊ฐ€๋กœ ์ฑ„์ด๋”๋ผ๋„ ๋ฌธ์ œ์—†๋Š” ์ •๋ณด๋ฅผ ์ €์žฅ, ๊ฐ™์€ ์›น์‚ฌ์ดํŠธ๋ฅผ ๋ฐฉ๋ฌธํ•  ๋•Œ๋งˆ๋‹ค ์ฝํžˆ๊ณ  ์ˆ˜์‹œ๋กœ ์ƒˆ๋กœ์šด ์ •๋ณด๋กœ ์—…๋ฐ์ดํŠธ ๋งŒ๋ฃŒ ๊ธฐ๊ฐ„o โ–ฒ ์ฟ ํ‚ค ์ •๋ณด๋ฅผ ํ—ค๋”์— ์ถ”๊ฐ€ํ•ด ์ „์†กํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํŠธ๋ž˜ํ”ฝ ๋ฐœ์ƒ, ๋ฏผ๊ฐ์ •๋ณด๋ฅผ ์ฟ ํ‚ค์— ์ €์žฅ์‹œ ๋ณด์•ˆ ๋ฌธ์ œ์  ๋ฐœ์ƒ ์„ธ์…˜(HTTP Session) - ์ฟ ํ‚ค์˜ ํŠธ๋ž˜ํ”ฝ, ๋ณด์•ˆ ์ด์Šˆ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๋„์ž… ํด๋ผ์ด์–ธ..
React typescript ์ฐธ๊ณ  ์˜์ƒ https://youtu.be/V9XLst8UEtk?si=EDo9nYnmnIPWGDP6 ํƒ€์ž… ์Šคํฌ๋ฆฝํŠธ๋กœ react-app ๋งŒ๋“ค๊ธฐ Adding TypeScript | Create React App Note: this feature is available with react-scripts@2.1.0 and higher. create-react-app.dev npx create-react-app my-project -- template typescript // App.js import { useState } from 'react'; import { Store } from './Store'; import {Restaurant} from './model/restuarant' let data:Restau..
Typescript๋กœ HTML๋‹ค๋ฃจ๊ธฐ ์ฐธ๊ณ  ์œ ํˆฌ๋ธŒ - https://www.youtube.com/watch?v=iZjfnoF784k // tsconfig.json // + ์ถ”๊ฐ€ "strickNullCheck" : true // null type ์—„๊ฒฉํžˆ ์ฒดํฌ ์•ˆ๋…• let ์ œ๋ชฉ = document.querySelector('#title') ์ œ๋ชฉ.innerHTML('๋ฐ˜๊ฐ€์›Œ์š”') // ์—๋Ÿฌ ) type์ด element | null /* ๋งŒ์•ฝ let ์ œ๋ชฉ = document.querySelector('์˜คํƒ€') ์ œ๋ชฉ === null Selector๋กœ ์ฐพ์€ ์š”์†Œ๋Š” ( element | null ) ์ด๊ธฐ ๋•Œ๋ฌธ์—, narrowing์„ ํ•ด์•ผํ•จ. */ narrowing ํ•˜๋Š” ๋ฐฉ๋ฒ• // 1 if(์ œ๋ชฉ != null){ ์ œ๋ชฉ.innerHTML='๋ฐ˜๊ฐ€์›Œ์š”' } //..
ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ ์ž…๋ฌธ, ๊ธฐ๋ณธ ๋ฌธ๋ฒ• ์ฐธ๊ณ  ์˜์ƒ - https://www.youtube.com/watch?v=xkpcNolC270&t=1s ํƒ€์ž…์„ ์—„๊ฒฉํ•˜๊ฒŒ -> ์—๋Ÿฌ๋ฉ”์„ธ์ง€์˜ ํ€„๋ฆฌํ‹ฐ๊ฐ€ ๋†’์•„์ง ->์ฝ”๋“œ ์—๋””ํ„ฐ ๋ถ€๊ฐ€ ๊ธฐ๋Šฅ์˜ ์—ญํ• ๋„ ํ•จ ts ์„ค์น˜๋ฐฉ๋ฒ• 1. node.js ์„ค์น˜ 2. npm install -g typescript 3. .ts ํŒŒ์ผ ๋งŒ๋“ค๊ธฐ 4. tsconfig.json ์ƒ์„ฑ - ๋‚ด์šฉ ์ž‘์„ฑ (ts->js ์ปดํŒŒ์ผ์‹œ ์˜ต์…˜ ์„ค์ •) tsํŒŒ์ผ์„ js๋กœ ๋ณ€ํ™˜ (ํ„ฐ๋ฏธ๋„์ผœ์„œ tsc -w์ž…๋ ฅ) let ์ด๋ฆ„ :string ='kim' ์ด๋ฆ„ = 123; // ์—๋Ÿฌ๋ฐœ์ƒ let ์ด๋ฆ„ :string[] =['kim'] let ์ด๋ฆ„ :{ name? : string } ={ name: 'kim'} let ์ด๋ฆ„ :{ name? : string } ={ } let ์ด๋ฆ„ ..
Array์˜ ํ—ท๊ฐˆ๋ฆฌ๋Š” ๋ฉ”์†Œ๋“œ ์ •๋ฆฌ(Array.from, arr.sort, arr.shift, arr.unshift) https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/from Array.from() - JavaScript | MDN Array.from() ๋ฉ”์„œ๋“œ๋Š” ์œ ์‚ฌ ๋ฐฐ์—ด ๊ฐ์ฒด(array-like object)๋‚˜ ๋ฐ˜๋ณต ๊ฐ€๋Šฅํ•œ ๊ฐ์ฒด(iterable object)๋ฅผ ์–•๊ฒŒ ๋ณต์‚ฌํ•ด ์ƒˆ๋กœ์šดArray ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค. developer.mozilla.org Array.from(arrayLike[, mapFn[, thisArg]]) : Set to Array, Map to Array console.log(Array.from('foo')); // Array ["f", "o", "o"] console.log(Array.from([1,..
CSS ๋ฐ˜์‘ํ˜• vw, vh, vmin, vmax์™€ Flex ๊ทธ๋ฆฌ๊ณ  inline, block ๋ฐ˜์‘ํ˜• ์›น vw : ๋ทฐํฌํŠธ ๋„ˆ๋น„์˜ 100๋ถ„์˜ 1 vmin : ๋ทฐํฌํŠธ ๋†’์ด vs ๋„ˆ๋น„ -> ์ž‘์€ ์ชฝ์˜ 100๋ถ„์˜ 1 vh : ๋ทฐํฌํŠธ ๋†’์ด์˜ 100๋ถ„์˜ 1 vmax : ๋ทฐํฌํŠธ ๋†’์ด vs ๋„ˆ๋น„ -> ํฐ ์ชฝ์˜ 100๋ถ„์˜ 1 Flex - ๋ ˆ์ด์•„์›ƒ ๋ฐฐ์น˜ ์ „์šฉ ๊ธฐ๋Šฅ helloflex abc helloflex Flex Container๊ฐ€ Flex์˜ ์˜ํ–ฅ์„ ๋ฐ›๋Š” ์ „์ฒด ๊ณต๊ฐ„ -> ์„ค์ •๋œ ์†์„ฑ์— ๋”ฐ๋ผ Flex Item์ด ์–ด๋–ค ํ˜•ํƒœ๋กœ ๋ฐฐ์น˜๋˜๋Š” ๊ฒƒ Flex์˜ ์†์„ฑ์€ Container์— ์ ์šฉํ•˜๋Š” ์†์„ฑ Item์— ์ ์šฉํ•˜๋Š” ์†์„ฑ Container์— ์ ์šฉํ•˜๋Š” ์†์„ฑ Item์— ์ ์šฉํ•˜๋Š” ์†์„ฑ .container { display : flex } Flex Item - ๊ฐ€๋กœ ๋ฐฉํ–ฅ ๋ฐฐ์น˜, - ์ž์‹ ์ด ๊ฐ€์ง„ ๋‚ด์šฉ๋ฌผ์˜ width๋งŒํผ๋งŒ ์ฐจ์ง€ (inl..
styled-components ๊ตฌ๊ธ€๋ง # styled-components์—์„œ css ๋ณ€์ˆ˜ ์‚ฌ์šฉํ•˜๊ธฐ (var) css ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ž์ฃผ ์“ฐ๋Š” ์ปฌ๋Ÿฌ ํŒ”๋ ›ํŠธ๋ฅผ ๋งŒ๋“ค์–ด ์˜คํƒ€ ์—†์ด ์ฝ”๋”ฉ์„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ์กฐ๊ธˆ ๋” ํ™•์žฅํ•˜๋ฉด ๋‹คํฌ ๋ชจ๋“œ ๊ฐ™์ด state ํ•˜๋‚˜๋กœ ์•ฑ, ์›น์˜ ์ „์ฒด theme์„ ๋ฐ”๊พธ๋Š” ๊ธฐ๋Šฅ๋„ ์ˆ˜์›”ํ•˜๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฒˆ ๊ธ€์—์„œ๋Š” nextJS์—์„œ styled-components์™€ var ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜์—ฌ ์† ์‰ฝ๊ฒŒ ์Šคํƒ€์ผ ๊ฐ’์„ ๋ณ€์ˆ˜ํ™” ํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค! dependence ์„ค์น˜ yarn add node-sass yarn add styled-components ํŒ”๋ ›ํŠธ scss ์ƒ์„ฑ ์Šคํƒ€์ผ์„ ๋ณ€์ˆ˜ํ™” ํ•  scss ํŒŒ์ผ์„ ๋งŒ๋“ค์–ด์ค๋‹ˆ๋‹ค. // src/styles/common.scss :root { --primary-color: ..
react-query ๊ฐœ๋…, ๊ธฐ๋ณธ ๋ฌธ๋ฒ• react-query ์‚ฌ์šฉ์ด์œ  0. ์„œ๋ฒ„ ์ƒํƒœ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ๋ ˆ์ด์–ด ์ „์ฒด๋ฅผ ์ถ”์ƒํ™”, ๊ฐœ๋ฐœ์ž๊ฐ€ ๊ด€๋ฆฌํ•˜๋Š” ์•ฑ ๋‚ด์˜ ์ƒํƒœ์—์„œ UI ์ƒํƒœ์—๋งŒ ์ง‘์ค‘ 1. ๋ฐ์ดํ„ฐ๋ฅผ ์ž๋™์œผ๋กœ ์บ์‹œํ•˜๊ณ , ์š”์ฒญ์„ ์ตœ์ ํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 2. ๋„คํŠธ์›Œํฌ ์˜ค๋ฅ˜ ๋ฐ ์˜ˆ์™ธ ์ƒํ™ฉ์„ ์ฒ˜๋ฆฌํ•˜๊ณ  ์ž๋™์œผ๋กœ ์žฌ์‹œ๋„ ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ์ œ๊ณต 3. ๊ธฐ์กด ๋ฏธ๋“ค์›จ์–ด๋กœ ๋น„๋™๊ธฐ ํ†ต์‹ ์„ ์ฒ˜๋ฆฌํ–ˆ์„๋•, api ๋™์ž‘๋งˆ๋‹ค ์ƒํƒœ์™€ ์‘๋‹ต๊ฐ’์„ ์ „์—ญ์œผ๋กœ ๊ด€๋ฆฌํ–ˆ๋Š”๋ฐ ์ด๋Š” ๋น„ํšจ์œจ์ ์ž„ -> react-query๋Š” react ์ปดํฌ๋„ŒํŠธ์™€ ํ†ตํ•ฉํ•ด ๊ฐ„ํŽธํ•˜๊ฒŒ ์ƒํƒœ๋ฅผ ๊ด€๋ฆฌ react-query์˜ ์„œ๋ฒ„ ๋ฐ์ดํ„ฐ ์ƒํƒœ ๋ถ„๋ฅ˜ Stale: ์„œ๋ฒ„ / ํด๋ผ์ด์–ธํŠธ์˜ ์ •๋ณด๊ฐ€ ์‹ ์„ ํ•˜์ง€ ์•Š์€ ์ƒํƒœ, ์ฆ‰ ๋™์ผํ•จ์„ ๋ณด์žฅํ•  ์ˆ˜ ์—†๋Š” ์ƒํƒœ Fresh: ์„œ๋ฒ„ / ํด๋ผ์ด์–ธํŠธ์˜ ์ •๋ณด๊ฐ€ ๋™์ผํ•˜๋‹ค๋Š” ๊ฒƒ์ด ๋ณด์žฅ๋จ, ํ•˜์ง€๋งŒ defaul..

728x90