Skip to content

๐Ÿ‘ฉ๐Ÿปโ€๐Ÿ’ป Frontend 13๊ธฐ 2025-07-03 ~ 2025-12-29 โ€‹

๋‚ด๊ฐ€ ๋…ธ๋ ฅํ•˜๊ณ  ๋„์ „ํ•œ ๋งŒํผ์ด ๋‚ด ์„ธ๊ณ„ ๐Ÿ’ซ 6 ๊ฐœ์›” ๋™์•ˆ ๊ต์œก์—์„œ ํ•™์Šตํ•œ ๊ฒƒ๋“ค์„ ๊ธฐ๋กํ•ด๋ณด๋ ค๊ณ  ํ•œ๋‹ค!zep์—์„œ์˜๋‚˜

๐Ÿ’ก ํ•™์Šต Tip

ํŒŒ๋ ˆํ† ์˜ ๋ฒ•์น™

  • 100๊ฐ€์ง€์˜ ๊ธฐ๋Šฅ์ด ์žˆ๋‹ค๋ฉด ํ˜„์—…์—์„œ ์“ฐ๋Š” ๊ธฐ๋Šฅ์€ ์•ฝ 20% ์ •๋„ ๋ฐ–์— ์•ˆ ๋œ๋‹ค.
  • ๋‹ค ๋ฐฐ์šฐ๊ณ  ์“ฐ๋ ค ํ•˜์ง€ ๋ง๊ณ , ์ž์ฃผ ์“ฐ๋Š” ๊ฒƒ๋ถ€ํ„ฐ ๊ฒฝํ—˜ํ•˜๋ฉด์„œ ๋ฐฐ์šฐ์ž.

First Word ๋ฒ•์น™

  • ์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š” ๋‹จ์–ด๋ฅผ ๋‚˜๋งŒ์˜ ์–ธ์–ด๋กœ ์ •๋ฆฌํ•˜๊ธฐ.
  • ๋”ฑ๋”ฑํ•œ ์ •์˜๋ณด๋‹ค ๋‚ด๊ฐ€ ์‰ฝ๊ฒŒ ์ดํ•ดํ•˜๊ธฐ ์‰ฌ์šด ๋ง๋กœ ๊ธฐ๋กํ•˜๊ธฐ

Study Preview โ€‹

HTML

HTML

HTML ํ•™์Šต ๋ชฉํ‘œ โ€‹

  1. HTML์˜ ๊ธฐ๋ณธ ๊ตฌ์กฐ๋ฅผ ์ดํ•ดํ•˜๊ณ  ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค.
  2. ๋‹ค์–‘ํ•œ HTML ์š”์†Œ์™€ ํƒœ๊ทธ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
  3. HTML ๋ฌธ์„œ์˜ ๊ตฌ์กฐ๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.
  4. HTML ํผ ์š”์†Œ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
  5. HTML ์‹œ๋งจํ‹ฑ ํƒœ๊ทธ๋ฅผ ์ดํ•ดํ•˜๊ณ  ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

HTML ์ฒดํฌ ๋ฆฌ์ŠคํŠธ โ€‹

  • โ˜‘๏ธ HTML์˜ ์—ด๋ฆฐํƒœ๊ทธ์™€ ๋‹ซํžŒํƒœ๊ทธ, ๋นˆํƒœ๊ทธ์˜ ๊ฐœ๋…์„ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‚˜์š”?
  • โ˜‘๏ธ ๋‹ค์–‘ํ•œ HTML ์š”์†Œ์™€ ํƒœ๊ทธ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‚˜์š”?
  • โ˜‘๏ธ ๋‹ค์–‘ํ•œ HTML ์š”์†Œ์™€ ํƒœ๊ทธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฌธ์„œ์˜ ๊ตฌ์กฐ๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋‚˜์š”?
  • โ˜‘๏ธ HTML ํผ ์š”์†Œ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‚˜์š”?
  • โ˜‘๏ธ HTML ์‹œ๋งจํ‹ฑ ํƒœ๊ทธ๋ฅผ ์ดํ•ดํ•˜๊ณ  ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‚˜์š”?

CSS

CSS

CSS ํ•™์Šต ๋ชฉํ‘œ โ€‹

  1. CSS์˜ ๊ธฐ๋ณธ ๊ฐœ๋…๊ณผ ์—ญํ• ์„ ์ดํ•ดํ•˜๊ณ  ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค.

  2. ๋‹ค์–‘ํ•œ CSS ์„ ํƒ์ž๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

  3. CSS๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ HTML ์š”์†Œ์˜ ์Šคํƒ€์ผ์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋‹ค.

  4. ํ…์ŠคํŠธ ์Šคํƒ€์ผ๋ง์„ ์ ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

  5. ์ƒ์ž ๋ชจ๋ธ์„ ์ดํ•ดํ•˜๊ณ  ์Šคํƒ€์ผ์„ ์ ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

  6. Flexbox๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋‹ค์–‘ํ•œ ๋ ˆ์ด์•„์›ƒ์„ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.

  7. Grid๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ณต์žกํ•œ ๋ ˆ์ด์•„์›ƒ์„ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.

  8. Flexbox์™€ Grid๋ฅผ ์ ์ ˆํžˆ ์‚ฌ์šฉํ•˜์—ฌ ๋ ˆ์ด์•„์›ƒ์„ ์„ค๊ณ„ํ•  ์ˆ˜ ์žˆ๋‹ค.

  9. CSS๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ HTML ์š”์†Œ์˜ ์Šคํƒ€์ผ์„ ๋ณ€๊ฒฝํ•˜๊ณ  ๋‹ค์–‘ํ•œ ์„ ํƒ์ž๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.


CSS ์ฒดํฌ ๋ฆฌ์ŠคํŠธ โ€‹

  • โ˜‘๏ธ CSS์˜ ๊ธฐ๋ณธ ๊ฐœ๋…๊ณผ ์—ญํ• ์„ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‚˜์š”?
  • โ˜‘๏ธ class ์„ ํƒ์ž์™€ id ์„ ํƒ์ž์˜ ์ฐจ์ด๋ฅผ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‚˜์š”?
  • โ˜‘๏ธ CSS๋ฅผ ํ™œ์šฉํ•˜์—ฌ HTML์— ์Šคํƒ€์ผ๋ง์„ ์ ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ• 3๊ฐ€์ง€๋ฅผ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‚˜์š”?
  • โ˜‘๏ธ block๊ณผ inline์˜ ์ฐจ์ด๋ฅผ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‚˜์š”?
  • โ˜‘๏ธ Flexbox๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋‹ค์–‘ํ•œ ๋ ˆ์ด์•„์›ƒ์„ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ๋‚˜์š”?

JavaScript

JavaScript

JavaScript ํ•™์Šต ๋ชฉํ‘œ โ€‹


console.log() โ€‹
  • console.log()๋กœ ์ฝ˜์†”์— ์›ํ•˜๋Š” ๊ฐ’์„ ์ถœ๋ ฅํ•˜๋Š” ๋ฐฉ๋ฒ•์˜ ์‚ฌ์šฉ ์˜ˆ์‹œ๋ฅผ ๋“ค ์ˆ˜ ์žˆ๋‹ค.
๋ณ€์ˆ˜ โ€‹
  • ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•˜๊ณ  ๊ฐ’์„ ํ• ๋‹นํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๊ธฐ์–ตํ•  ์ˆ˜ ์žˆ๋‹ค.
  • let๊ณผ const์˜ ์ฐจ์ด๋ฅผ ๊ธฐ์–ตํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ๋ณ€์ˆ˜ ์„ ์–ธ ํ‚ค์›Œ๋“œ var์˜ ๋ฌธ์ œ์ ๊ณผ ํ˜ธ์ด์ŠคํŒ…์— ๋Œ€ํ•ด์„œ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค.
ํƒ€์ž…๊ธฐ์ดˆ โ€‹
  • JavaScript์˜ number, string, boolean ํƒ€์ž…์˜ ํŠน์ง•์„ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • typeof ์—ฐ์‚ฐ์ž๋ฅผ ํ™œ์šฉํ•ด์„œ ๊ฐ’์˜ ํƒ€์ž…์„ ์กฐํšŒํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๊ธฐ์–ตํ•œ๋‹ค.
  • null๊ณผ undefined์˜ ์ฐจ์ด์ ์„ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค.
number ํƒ€์ž… โ€‹
  • number ํƒ€์ž… ๊ฐ’์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ„๋‹จํ•œ ์—ฐ์‚ฐ์˜ ์˜ˆ์‹œ๋ฅผ ๋“ค ์ˆ˜ ์žˆ๋‹ค. (+, -, *, /, %)
  • Math ๊ฐ์ฒด์˜ ๋‹ค์–‘ํ•œ ๋ฉ”์„œ๋“œ(Math.random(), Math.floor(), Math.ceil(), Math.pow() ๋“ฑ)๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๋‚œ์ˆ˜ ์ƒ์„ฑ, ์˜ฌ๋ฆผ/๋‚ด๋ฆผ, ๊ฑฐ๋“ญ์ œ๊ณฑ ๊ณ„์‚ฐ๊ณผ ๊ฐ™์€ ์ˆ˜ํ•™์  ์—ฐ์‚ฐ์˜ ์‚ฌ์šฉ ์˜ˆ์‹œ๋ฅผ ๋“ค ์ˆ˜ ์žˆ๋‹ค.
boolean ํƒ€์ž… โ€‹
  • ๋น„๊ต ์—ฐ์‚ฐ์ž(<, <=, >, >=)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ number ํƒ€์ž…์˜ ๊ฐ’์„ ๋น„๊ตํ•  ์ˆ˜ ์žˆ๋‹ค.๋™์น˜ ์—ฐ์‚ฐ์ž(===)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋‘ ๊ฐ’์ด ๋™์ผํ•œ์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.
  • OR์—ฐ์‚ฐ์ž(||), AND์—ฐ์‚ฐ์ž(&&), NOT์—ฐ์‚ฐ์ž(!)์˜ ์‚ฌ์šฉ ๋ฐฉ๋ฒ•์„ ๊ธฐ์–ตํ•œ๋‹ค.
  • falsyํ•œ ๊ฐ’์„ ๋‚˜์—ดํ•  ์ˆ˜ ์žˆ๋‹ค.
string ํƒ€์ž… โ€‹
  • number ํƒ€์ž…์˜ ๊ฐ’์„ string ํƒ€์ž…์œผ๋กœ, string ํƒ€์ž…์˜ ๊ฐ’์„ number ํƒ€์ž…์œผ๋กœ ๋ณ€๊ฒฝํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ์ž‘์€๋”ฐ์˜ดํ‘œ(โ€™โ€™), ํฐ๋”ฐ์˜ดํ‘œ(โ€โ€), ๋ฐฑํ‹ฑ(``)์˜ ์‚ฌ์šฉ๋ฒ•๊ณผ ์ฐจ์ด์ ์„ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ํ…œํ”Œ๋ฆฟ ๋ฆฌํ„ฐ๋Ÿด์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ณ€์ˆ˜๋ฅผ ๋ฌธ์ž์—ด์— ํšจ์œจ์ ์œผ๋กœ ์‚ฝ์ž…ํ•˜๊ณ , ๋™์ ์ธ ๋ฌธ์ž์—ด์„ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.
  • length ํ”„๋กœํผํ‹ฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฌธ์ž์—ด์˜ ๊ธธ์ด๋ฅผ ์กฐํšŒํ•˜๊ณ , ์‚ฌ์šฉ ์˜ˆ์‹œ๋ฅผ ๋“ค ์ˆ˜ ์žˆ๋‹ค.
์กฐ๊ฑด๋ฌธ โ€‹
  • if, else๋ฌธ์„ ์‚ฌ์šฉํ•˜์—ฌ ํŠน์ • ์กฐ๊ฑด์—๋งŒ ์ฝ”๋“œ๊ฐ€ ์‹คํ–‰๋˜๋„๋ก ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • else if๋ฌธ์„ ํ™œ์šฉํ•˜์—ฌ ์—ฌ๋Ÿฌ ์กฐ๊ฑด์„ ์ˆœ์ฐจ์ ์œผ๋กœ ํ™•์ธํ•˜๊ณ  ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • if๋ฌธ๊ณผ switch๋ฌธ์˜ ์ฐจ์ด๋ฅผ ์ดํ•ดํ•˜๊ณ , switch๋ฌธ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ ์ ˆํ•œ ์ƒํ™ฉ์˜ ์˜ˆ์‹œ๋ฅผ ๋“ค ์ˆ˜ ์žˆ๋‹ค.
  • ์‚ผํ•ญ ์—ฐ์‚ฐ์ž(? :)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์กฐ๊ฑด์— ๋”ฐ๋ผ ๋‹ค๋ฅธ ๊ฐ’์„ ๊ฐ„๊ฒฐํ•˜๊ฒŒ ๋ฐ˜ํ™˜ํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.
๋ฐ˜๋ณต๋ฌธ ๊ธฐ์ดˆ โ€‹
  • for๋ฌธ์„ ์‚ฌ์šฉํ•˜์—ฌ ์›ํ•˜๋Š” ํšŸ์ˆ˜ ๋งŒํผ ์ฝ”๋“œ๊ฐ€ ์‹คํ–‰๋˜๋„๋ก ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๊ธฐ์–ตํ•œ๋‹ค.
  • ๋ฐ˜๋ณต์ ์ธ ์ฝ”๋“œ ์‹คํ–‰์ด ํ•„์š”ํ•œ ์ƒํ™ฉ์„ ์ดํ•ดํ•˜๊ณ , ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด for๋ฌธ์„ ์‚ฌ์šฉํ•˜์—ฌ ํšจ์œจ์ ์œผ๋กœ ์ฝ”๋“œ๋ฅผ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • while๋ฌธ์˜ ๋™์ž‘ ์›๋ฆฌ์™€ ํ™œ์šฉ๋ฒ•์„ ์ดํ•ดํ•˜๊ณ , ์กฐ๊ฑด ๊ธฐ๋ฐ˜ ๋ฐ˜๋ณต์ด ํ•„์š”ํ•œ ์ƒํ™ฉ์—์„œ for๋ฌธ๊ณผ ๊ตฌ๋ถ„ํ•˜์—ฌ ์ ์ ˆํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ๋‹ค์ค‘ ๋ฐ˜๋ณต๋ฌธ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ˜๋ณต์ ์ธ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ด์•ผ ํ•˜๋Š” ์ ์ ˆํ•œ ์˜ˆ์‹œ๋ฅผ ๋“ค ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์‹คํ–‰ ์ˆœ์„œ๋ฅผ ๋ช…ํ™•ํžˆ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค.
๋ฐฐ์—ด ๊ธฐ์ดˆ โ€‹
  • Array.isArray๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ฃผ์–ด์ง„ ๊ฐ’์ด ๋ฐฐ์—ด์ธ์ง€ ์—ฌ๋ถ€๋ฅผ ๊ธฐ์–ตํ•  ์ˆ˜ ์žˆ๋‹ค
  • pop(), push(), unshift(), shift() ๋“ฑ์˜ ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐฐ์—ด ์š”์†Œ๋ฅผ ์ถ”๊ฐ€ ๋˜๋Š” ์‚ญ์ œํ•  ์ˆ˜ ์žˆ๋‹ค
  • slice() ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐฐ์—ด ์š”์†Œ ์ค‘ ์ผ๋ถ€๋ฅผ ๋ณต์‚ฌํ•˜์—ฌ ์ƒˆ๋กœ์šด ๋ฐฐ์—ด์„ ์ƒ์„ฑํ•˜๊ณ  ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ๋ฐฐ์—ด์„ ํšจ์œจ์ ์œผ๋กœ ๋‹ค๋ฃจ๊ธฐ ์œ„ํ•œ ๋ฉ”์„œ๋“œ์˜ ์ข…๋ฅ˜์™€ ๊ธฐ๋Šฅ์„ ๋‚˜์—ดํ•  ์ˆ˜ ์žˆ๋‹ค.
๋ฐฐ์—ด๊ณผ ๋ฐ˜๋ณต๋ฌธ โ€‹
  • for๋ฌธ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐฐ์—ด์˜ ๋ชจ๋“  ์š”์†Œ๋ฅผ ์ˆœํšŒํ•˜๊ณ , ๊ฐ ์š”์†Œ์— ๋Œ€ํ•ด ์›ํ•˜๋Š” ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • for๋ฌธ ๋‚ด๋ถ€์— if๋ฌธ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐฐ์—ด์˜ ๋ชจ๋“  ์š”์†Œ ์ค‘ ์กฐ๊ฑด์— ๋งž๋Š” ์š”์†Œ์— ๋Œ€ํ•ด์„œ๋งŒ ์›ํ•˜๋Š” ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • for...of ๋ฌธ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐฐ์—ด์˜ ๋ชจ๋“  ์š”์†Œ๋ฅผ ์ˆœํšŒํ•˜๊ณ , ๊ฐ€๋…์„ฑ์„ ๋†’์ธ ์ฝ”๋“œ๋ฅผ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋‹ค์ค‘ ๋ฐ˜๋ณต๋ฌธ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ค‘์ฒฉ๋œ ๋ฐฐ์—ด(2์ฐจ์› ๋ฐฐ์—ด ๋“ฑ)์˜ ๋ชจ๋“  ์š”์†Œ๋ฅผ ์ˆœํšŒํ•˜๊ณ  ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค.
ํ•จ์ˆ˜ ๊ธฐ์ดˆ โ€‹
  • ํ•จ์ˆ˜ ์„ ์–ธ๋ฌธ์„ ์‚ฌ์šฉํ•˜์—ฌ ํ•จ์ˆ˜๋ฅผ ์ •์˜ํ•˜๊ณ , ํ•จ์ˆ˜ ์ •์˜์— ํ•„์š”ํ•œ ์š”์†Œ(ํ•จ์ˆ˜๋ช…, ๋งค๊ฐœ๋ณ€์ˆ˜, ํ•จ์ˆ˜ ๋ณธ๋ฌธ)๋ฅผ ๋ชจ๋‘ ๋‚˜์—ดํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ํ•จ์ˆ˜ ์„ ์–ธ๋ฌธ์„ ํ•จ์ˆ˜ ํ‘œํ˜„์‹์œผ๋กœ ๋ณ€๊ฒฝํ•˜๊ณ , ๋‘ ๋ฐฉ์‹์˜ ์ฐจ์ด๋ฅผ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ดํ•ดํ•˜๊ณ , ์ „๋‹ฌ์ธ์ž๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜์— ํ• ๋‹น๋˜๋Š” ๋ฐฉ์‹์„ ๋ช…ํ™•ํžˆ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • return๋ฌธ์„ ์‚ฌ์šฉํ•˜์—ฌ ํ•จ์ˆ˜์˜ ๊ฒฐ๊ณผ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ดํ•ดํ•˜๊ณ , ๋ฐ˜ํ™˜๋œ ๊ฐ’์„ ํ•จ์ˆ˜ ์™ธ๋ถ€์—์„œ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ (์žฌ์‚ฌ์šฉ์„ฑ, ์ฝ”๋“œ์˜ ๊ฐ€๋…์„ฑ ํ–ฅ์ƒ, ์œ ์ง€๋ณด์ˆ˜ ์šฉ์ด์„ฑ)๋ฅผ ๋‚˜์—ดํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ํ•จ์ˆ˜ ๋‚ด๋ถ€์—์„œ ์„ ์–ธ๋œ ๋ณ€์ˆ˜๋ฅผ ํ•จ์ˆ˜ ์™ธ๋ถ€์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค๋Š” ๊ฒƒ์„ ๊ธฐ์–ตํ•  ์ˆ˜ ์žˆ๋‹ค.
  • (์‹ฌํ™”ํŽธ - ์Šค์ฝ”ํ”„) ํ•จ์ˆ˜ ๋‚ด๋ถ€์—์„œ ์„ ์–ธ๋œ ๋ณ€์ˆ˜๋ฅผ ํ•จ์ˆ˜ ์™ธ๋ถ€์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค๋Š” ๊ฒƒ์„ ๊ธฐ์–ตํ•  ์ˆ˜ ์žˆ๋‹ค.
๊ฐ์ฒด ๊ธฐ์ดˆ โ€‹
  • ๊ฐ์ฒด๋Š” ํ”„๋กœํผํ‹ฐ์˜ ์ง‘ํ•ฉ์ด๋ฉฐ, ๊ฐ ํ”„๋กœํผํ‹ฐ๊ฐ€ ํ‚ค-๊ฐ’ ์Œ์œผ๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค๋Š” ๊ฐœ๋…์„ ๊ธฐ์–ตํ•  ์ˆ˜ ์žˆ๋‹ค.
  • dot notation๊ณผ bracket notation์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ์ฒด ํ”„๋กœํผํ‹ฐ์˜ ๊ฐ’์„ ์กฐํšŒํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๊ธฐ์–ตํ•  ์ˆ˜ ์žˆ๋‹ค.
  • dot notation๊ณผ bracket notation์˜ ์ฐจ์ด์™€ ์ฃผ์˜ํ•  ์ (์˜ˆ: bracket notation์—์„œ๋Š” ๋ณ€์ˆ˜๋ฅผ ํ‚ค๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ )์„ ์ดํ•ดํ•˜๊ณ , ๊ฐ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์‚ฌ์šฉ ์˜ˆ์‹œ๋ฅผ ๋“ค ์ˆ˜ ์žˆ๋‹ค.
  • ๊ฐ์ฒด ํ”„๋กœํผํ‹ฐ๋ฅผ ์ถ”๊ฐ€, ๋ณ€๊ฒฝ, ์‚ญ์ œํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • for...in ๋ฌธ๊ณผ Object ๋ฉ”์„œ๋“œ(Object.keys, Object.values, Object.entries)๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๊ฐ์ฒด์˜ ํ”„๋กœํผํ‹ฐ๋ฅผ ๋ฐ˜๋ณต์ ์œผ๋กœ ์กฐํšŒํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ดํ•ดํ•˜๊ณ  ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
๋ฐฐ์—ด ์‘์šฉ โ€‹
  • map ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐฐ์—ด์˜ ๊ฐ ์š”์†Œ๋ฅผ ๋ณ€ํ™˜ํ•˜๊ณ , ์ƒˆ๋กœ์šด ๋ฐฐ์—ด์„ ์ƒ์„ฑํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • filter ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์กฐ๊ฑด์— ๋งž๋Š” ๋ฐฐ์—ด ์š”์†Œ๋งŒ ์„ ํƒํ•˜์—ฌ ์ƒˆ๋กœ์šด ๋ฐฐ์—ด์„ ์ƒ์„ฑํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • reduce ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐฐ์—ด์˜ ์š”์†Œ๋ฅผ ๋ˆ„์ ํ•˜์—ฌ ๋‹จ์ผ ๊ฐ’์œผ๋กœ ์ถ•์•ฝํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ๋‹ค์–‘ํ•œ ๊ณ ์ฐจ ํ•จ์ˆ˜(forEach, some, every, find, sort ๋“ฑ)๋ฅผ ๋‚˜์—ดํ•˜๊ณ , ๊ฐ ํ•จ์ˆ˜์˜ ์‚ฌ์šฉ ์˜ˆ์‹œ๋ฅผ ๋“ค ์ˆ˜ ์žˆ๋‹ค.
  • map๊ณผ forEach์˜ ์ฐจ์ด๋ฅผ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๊ฐ๊ฐ์˜ ์‚ฌ์šฉ ๋ชฉ์ ๊ณผ ์ ํ•ฉํ•œ ์ƒํ™ฉ์„ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ๋ฐฐ์—ด ๋ณต์‚ฌ๋ฅผ ์œ„ํ•ด spread syntax์™€ slice๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ƒˆ๋กœ์šด ๋ฐฐ์—ด์„ ์ƒ์„ฑํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.
๊ฐ์ฒด ์‘์šฉ โ€‹
  • ๊ฐ์ฒด๋ฅผ ๋ณต์‚ฌํ•˜๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ spread syntax์™€ Object.assign()์„ ๋‚˜์—ดํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ๊ฐ์ฒด์˜ ๋ฉ”์„œ๋“œ๋Š” ๊ฐ์ฒด์˜ ํ”„๋กœํผํ‹ฐ๋กœ ํ•จ์ˆ˜๊ฐ€ ํ• ๋‹น๋œ ํ˜•ํƒœ์ž„์„ ์ดํ•ดํ•˜๊ณ , ๋ฐฐ์—ด ๋ฉ”์„œ๋“œ๋Š” ๋ฐฐ์—ด ๊ฐ์ฒด์˜ ํ”„๋กœํ† ํƒ€์ž…์— ์ •์˜๋œ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๊ฒƒ์ž„์„ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค
ํ•จ์ˆ˜ ์‘์šฉ โ€‹
  • ํ•จ์ˆ˜ ํ‘œํ˜„์‹์„ ํ™”์‚ดํ‘œ ํ•จ์ˆ˜๋กœ ๋ณ€๊ฒฝํ•˜์—ฌ ๋™์ผํ•œ ๋™์ž‘์„ ํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ํ•จ์ˆ˜ ์Šค์ฝ”ํ”„์™€ ๋ธ”๋ก ์Šค์ฝ”ํ”„์˜ ์ฐจ์ด๋ฅผ ์ดํ•ดํ•˜๊ณ , ์ „์—ญ ๋ณ€์ˆ˜์˜ ๋ฌธ์ œ์ ์„ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค.
๊ตฌ์กฐ๋ถ„ํ•ดํ• ๋‹น โ€‹
  • ๊ตฌ์กฐ๋ถ„ํ•ดํ• ๋‹น์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐฐ์—ด์˜ ์š”์†Œ๋ฅผ ๊ฐœ๋ณ„ ๋ณ€์ˆ˜๋กœ ๋ถ„๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๊ธฐ์–ตํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ๊ตฌ์กฐ๋ถ„ํ•ดํ• ๋‹น์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ์ฒด์˜ ํ”„๋กœํผํ‹ฐ๋ฅผ ๊ฐœ๋ณ„ ๋ณ€์ˆ˜๋กœ ๋ถ„๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๊ธฐ์–ตํ•  ์ˆ˜ ์žˆ๋‹ค
  • ์ค‘์ฒฉ ๊ตฌ์กฐ์˜ ๋ฐฐ์—ด๊ณผ ๊ฐ์ฒด๋ฅผ ๊ตฌ์กฐ๋ถ„ํ•ดํ• ๋‹นํ•˜์—ฌ ๊ฐ’์„ ์ถ”์ถœํ•˜๋Š” ์˜ˆ์‹œ๋ฅผ ๋“ค ์ˆ˜ ์žˆ๋‹ค.
DOM ๊ธฐ์ดˆ โ€‹
  • DOM์ด ๋ธŒ๋ผ์šฐ์ €๊ฐ€ HTML ๋ฌธ์„œ๋ฅผ JavaScript์˜ ๊ฐ์ฒด ํ˜•ํƒœ๋กœ ๋ณ€ํ™˜ํ•œ Document Object Model์ด๋ผ๋Š” ๊ฒƒ์„ ๊ธฐ์–ตํ•  ์ˆ˜ ์žˆ๋‹ค.
  • Node์˜ ์œ ํ˜•๊ณผ DOM API์— ๋Œ€ํ•ด ์•Œ ์ˆ˜ ์žˆ๋‹ค.
  • querySelector๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ HTML ์š”์†Œ๋ฅผ ์„ ํƒํ•˜๊ณ  ํ•ด๋‹น ์š”์†Œ๋ฅผ ๋ณ€์ˆ˜์— ํ• ๋‹นํ•  ์ˆ˜ ์žˆ๋‹ค.
  • DOM ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ HTML ์š”์†Œ์˜ ์†์„ฑ, ๋‚ด์šฉ๋˜๋Š” ์Šคํƒ€์ผ์„ ๋™์ ์œผ๋กœ ๋ณ€๊ฒฝํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค
  • DOM API๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ƒˆ๋กœ์šด HTML ์š”์†Œ๋ฅผ ์ƒ์„ฑํ•˜๊ณ , ๊ธฐ์กด ์š”์†Œ์— appendํ•˜๊ฑฐ๋‚˜ prependํ•˜์—ฌ ๋™์ ์œผ๋กœ ๋ฌธ์„œ ๊ตฌ์กฐ๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค
์ด๋ฒคํŠธ ๊ฐ์ฒด โ€‹
  • addEventListener ๋ฌธ๋ฒ•์„ ์‚ฌ์šฉํ•˜์—ฌ HTML ์š”์†Œ์— ์ด๋ฒคํŠธ๋ฅผ ์„ค์ •ํ•˜๊ณ , ์‚ฌ์šฉ์ž ๋™์ž‘์— ๋”ฐ๋ผ ๋™์ ์œผ๋กœ ๋ฐ˜์‘ํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ์ด๋ฒคํŠธ ๊ฐ์ฒด์˜ ์—ญํ• ๊ณผ ๊ธฐ๋ณธ ์†์„ฑ์„ ์„ค๋ช…ํ•˜๊ณ , ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ•œ ์š”์†Œ๋ฅผ ์กฐํšŒํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ์ด๋ฒคํŠธ์˜ ๋ฒ„๋ธ”๋ง์— ๋Œ€ํ•ด ์ดํ•ดํ•˜๊ณ , event.stopPropagation()์„ ์ ์ ˆํžˆ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
๋น„๋™๊ธฐ โ€‹
  • ๋™๊ธฐ(Synchronous)์™€ ๋น„๋™๊ธฐ(Asynchronous)์˜ ์ฐจ์ด๋ฅผ ์ดํ•ดํ•˜๊ณ , JavaScript์—์„œ ๋น„๋™๊ธฐ ์ž‘์—…์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • Web API์˜ ๊ฐœ๋…๊ณผ ์—ญํ• ์„ ์ดํ•ดํ•˜๊ณ , Timer, Event, Fetch ๋“ฑ์˜ Web API๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๋น„๋™๊ธฐ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • Promise์˜ ๊ฐœ๋…๊ณผ ๋™์ž‘ ํ๋ฆ„์„ ์ดํ•ดํ•˜๊ณ , ์‚ฌ์šฉ๋ฒ•์„ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • async/await์˜ ๊ฐœ๋…๊ณผ ์‚ฌ์šฉ๋ฒ•์„ ์ดํ•ดํ•˜๊ณ , Promise์™€์˜ ์ฐจ์ด๋ฅผ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • fetch()๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ๋น„๋™๊ธฐ์ ์œผ๋กœ ์š”์ฒญํ•˜๊ณ , Promise ๋ฐ async/await๊ณผ ํ•จ๊ป˜ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
๋ฐ์ดํ„ฐ fetch โ€‹
  • HTTP ์š”์ฒญ/์‘๋‹ต ๋ฉ”์‹œ์ง€์˜ ์—ญํ• ๊ณผ ๊ตฌ์กฐ์— ๋Œ€ํ•ด ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • HTTP ๋ฉ”์„œ๋“œ๋ฅผ ๋‚˜์—ดํ•˜๊ณ (GET, POST, PUT, DELETE ๋“ฑ), ๊ฐ๊ฐ์˜ ํŠน์ง•๊ณผ ์‚ฌ์šฉ ์˜ˆ์‹œ๋ฅผ ๋“ค ์ˆ˜ ์žˆ๋‹ค.
  • HTTP ์‘๋‹ต ์ฝ”๋“œ์˜ ๋ฒ”์ฃผ(1xx~5xx)๋ฅผ ์ดํ•ดํ•˜๊ณ , ๊ฐ ๋ฒ”์ฃผ๋ณ„๋กœ ์–ด๋–ค ์ƒํ™ฉ์—์„œ ๋ฐœ์ƒํ•˜๋Š”์ง€์™€ ์ด์— ๋Œ€ํ•œ ์ ์ ˆํ•œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • try-catch ๊ตฌ๋ฌธ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋Ÿฐํƒ€์ž„ ์—๋Ÿฌ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • (์‹ฌํ™”) CORS ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ์ด์œ ๋ฅผ ์•Œ๊ณ , ํ•ด๊ฒฐ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค.

Git & GitHub

Git & GitHub

Git & GitHub ํ•™์Šต ๋ชฉํ‘œ โ€‹

  1. Git์˜ ๊ธฐ๋ณธ ๊ฐœ๋…๊ณผ ์›๋ฆฌ๋ฅผ ์ดํ•ดํ•˜๊ณ  ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค.
  2. Git ์‹ค์Šต์„ ์œ„ํ•œ ํ™˜๊ฒฝ(VSCode, SourceTree)์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.
  3. Windows ๋ฐ Mac ํ™˜๊ฒฝ์—์„œ Git์™€ SourceTree๋ฅผ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ๋‹ค.
  4. Git ์‚ฌ์šฉ์„ ์œ„ํ•œ ๊ธฐ๋ณธ ์„ค์ •์„ ํ•  ์ˆ˜ ์žˆ๋‹ค.
  5. Git์„ ์ด์šฉํ•ด ์ƒˆ๋กœ์šด ํ”„๋กœ์ ํŠธ๋ฅผ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ๋‹ค(git init).
  6. status ๋ช…๋ น์–ด์™€ .ignore ํŒŒ์ผ์„ ๋งŒ๋“ค์–ด ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
  7. Git์„ ์ด์šฉํ•ด ์ฒซ commit์„ ๋‚จ๊ธธ ์ˆ˜ ์žˆ๋‹ค.
  8. commit ์ด๋ ฅ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋Š” git log ๋ช…๋ น์–ด๋ฅผ ์„ค์ •ํ•˜๊ณ  ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
  9. reset ๋ฐ revert ๋ช…๋ น์–ด๋กœ ์ด์ „ commit์œผ๋กœ ๋Œ์•„๊ฐˆ ์ˆ˜ ์žˆ๋‹ค.
  10. SourceTree๋ฅผ ์ด์šฉํ•ด ์ด์ „ commit์œผ๋กœ ๋Œ์•„๊ฐ€๋Š” ๋ฐฉ๋ฒ•์„ ์ตํž ์ˆ˜ ์žˆ๋‹ค.
  11. branch์˜ ๊ฐœ๋…์„ ์ดํ•ดํ•˜๊ณ  ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
  12. branch๋ฅผ ํ•ฉ์น˜๊ธฐ(merge, rebase)ํ•  ์ˆ˜ ์žˆ๋‹ค.
  13. merge์˜ ๋‹ค์–‘ํ•œ ๋ฐฉ์‹๊ณผ ์˜ต์…˜์„ ์ดํ•ดํ•˜๊ณ  ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
  14. ์ถฉ๋Œ(conflict)์— ๋Œ€ํ•ด ์ดํ•ดํ•˜๊ณ  ์ด๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค.
  15. ๋‹ค๋ฅธ branch์—์„œ commit ์ด๋ ฅ์„ ๊ฐ€์ ธ์˜ค๋Š” cherry-pick ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
  16. GitHub์— ๊ฐ€์ž…ํ•˜๊ณ  ํ† ํฐ์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.
  17. GitHub์— Repository๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์ฝ”๋“œ๋ฅผ pushํ•  ์ˆ˜ ์žˆ๋‹ค.
  18. GitHub์—์„œ push์™€ pull์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
  19. GitHub๋ฅผ ์ด์šฉํ•œ ํ˜‘์—… ํ”„๋กœ์„ธ์Šค๋ฅผ ์ดํ•ดํ•˜๊ณ  ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
  20. GitHub์—์„œ tag ๊ธฐ๋Šฅ๊ณผ ์›๊ฒฉ ๋ธŒ๋žœ์น˜๋ฅผ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.

React

React
React๋ฅผ ํ•™์Šตํ•˜๋Š” ์ด์œ  โ€‹

React๊ฐ€ ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๋Š” ์ด์œ ๋ฅผ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • React๊ฐ€ ๋ฌด์—‡์ธ์ง€ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • React์˜ ํŠน์ง•๊ณผ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ ๊ฐ€ ๋ฌด์—‡์ธ์ง€ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • Vanilla JavaScript์™€ ๋น„๊ตํ–ˆ์„ ๋•Œ React๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ ๊ฐ€ ๋ฌด์—‡์ธ์ง€ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • SPA๊ฐ€ ๋ฌด์—‡์ธ์ง€ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ๊ฐ€์ƒDOM์ด ๋ฌด์—‡์ธ์ง€ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค.
React์˜ ์žฅ์ ๊ณผ ํŠน์ง• โ€‹

๋ฐ”๋‹๋ผ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์™€ ๋น„๊ตํ–ˆ์„ ๋•Œ React์˜ ๋‹จ์ผ ํŽ˜์ด์ง€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜(SPA)๊ณผ ๊ฐ€์ƒ DOM์„ ํ™œ์šฉํ•˜๋Š” ์žฅ์ ์„ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ๊ฐ€์ƒDOM ๋™์ž‘์›๋ฆฌ๋ฅผ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • SPA ๊ฐ€ ๋ฌด์—‡์ธ์ง€ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • SPA ์‚ฌ์šฉํ•˜๋Š” ์ด์œ ์— ๋Œ€ํ•ด ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ์ปดํฌ๋„ŒํŠธ ๊ธฐ๋ฐ˜ ๊ฐœ๋ฐœ์ด ๋ฌด์—‡์ธ์ง€ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ์ปดํฌ๋„ŒํŠธ ๊ธฐ๋ฐ˜ ๊ฐœ๋ฐœ์˜ ์žฅ์ ์ด ๋ฌด์—‡์ธ์ง€ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค.
React์˜ ์žฅ์ ๊ณผ ํŠน์ง• โ€‹

React ํ™˜๊ฒฝ ์„ค์ • ๋ฐฉ๋ฒ•์„ ์ดํ•ดํ•˜๊ณ , Create React App์„ ์‚ฌ์šฉํ•˜์—ฌ ํ”„๋กœ์ ํŠธ๋ฅผ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • create-react-app์„ ์„ค์น˜ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ˆ™์ง€ํ•˜๊ณ  ์žˆ๋‹ค.
  • React ๊ธฐ๋ณธ ํŒŒ์ผ๊ตฌ์กฐ์— ๋Œ€ํ•ด ์ดํ•ดํ•œ๋‹ค.
  • npm ๋ช…๋ น์–ด๋ฅผ ์ด์šฉํ•˜์—ฌ, ์›ํ•˜๋Š” ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • public ํด๋”์™€ src ํด๋”์˜ ์“ฐ์ž„์— ๋Œ€ํ•ด ์ดํ•ดํ•œ๋‹ค.
JSX ๋ฌธ๋ฒ• โ€‹

JSX ๋ฌธ๋ฒ•์˜ ๊ธฐ๋ณธ์„ ์ดํ•ดํ•˜๊ณ , React์—์„œ HTML๊ณผ JavaScript๋ฅผ ํšจ๊ณผ์ ์œผ๋กœ ๊ฒฐํ•ฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • JSX๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•๊ณผ ์‚ฌ์šฉํ–ˆ์„ ๋•Œ์˜ ์žฅ์ ์„ ์ดํ•ดํ•œ๋‹ค.
  • HTML/JavaScript ๋ฌธ๋ฒ•๊ณผ JSX ๋ฌธ๋ฒ•์˜ ์ฐจ์ด๋ฅผ ์ดํ•ดํ•œ๋‹ค.
  • babel์„ ํ™œ์šฉํ•˜์—ฌ JSX ์ฝ”๋“œ๋ฅผ JavaScript ์ฝ”๋“œ๋กœ ๋ณ€ํ™˜ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • HTML ์ฝ”๋“œ๋ฅผ JSX ์ฝ”๋“œ๋กœ ๋ณ€ํ™˜๋˜๋Š” ๊ณผ์ •์„ ์ดํ•ดํ•œ๋‹ค.
์ปดํฌ๋„ŒํŠธ ๋งŒ๋“ค๊ธฐ โ€‹

์ปดํฌ๋„ŒํŠธ ๊ธฐ๋ฐ˜ ๊ฐœ๋ฐœ์˜ ๊ฐœ๋…์„ ์ดํ•ดํ•˜๊ณ , React ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์ดํ•ดํ•œ๋‹ค.
  • ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋‚ด๋ณด๋‚ด๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์ดํ•ดํ•œ๋‹ค.
  • ๋ถ€๋ชจ ์ปดํฌ๋„ŒํŠธ์— ์ž์‹ ์ปดํฌ๋„ŒํŠธ๋ฅผ ์ค‘์ฒฉ์‹œํ‚ค๋Š” ๋ฐฉ๋ฒ•์„ ์ดํ•ดํ•œ๋‹ค.
  • ์›ํ•˜๋Š” UI๋ฅผ ๋ณด์—ฌ์ฃผ๊ธฐ ์œ„ํ•œ ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.
์ƒํƒœ๊ด€๋ฆฌ, useState() โ€‹

useState()๋ฅผ ์‚ฌ์šฉํ•œ ์ƒํƒœ ๊ด€๋ฆฌ ๊ธฐ๋ฒ•์„ ์ดํ•ดํ•˜๊ณ , ์ปดํฌ๋„ŒํŠธ ๋‚ด์—์„œ ์ƒํƒœ๋ฅผ ์–ด๋–ป๊ฒŒ ๊ด€๋ฆฌํ•˜๋Š”์ง€ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • React ์ปดํฌ๋„ŒํŠธ์—์„œ state์˜ ์—ญํ• ์— ๋Œ€ํ•ด ์ดํ•ดํ•œ๋‹ค.
  • Hook์˜ ๊ฐœ๋…์— ๋Œ€ํ•ด ์ดํ•ดํ•œ๋‹ค.
  • useState๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋™์ ์ธ ์ƒํƒœ ๊ฐ’์„ ๋‹ค๋ฃจ๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์ดํ•ดํ•œ๋‹ค.
  • input ์š”์†Œ์˜ ๊ฐ’์„ ๋ฐ›์•„์˜ค๋Š” ๋ฐฉ๋ฒ•์— ๊ด€ํ•ด ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค.
useEffect() โ€‹

useEffect()๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ปดํฌ๋„ŒํŠธ์˜ ์ƒ๋ช…์ฃผ๊ธฐ๋ฅผ ๊ด€๋ฆฌํ•˜๊ณ  ๋ถ€์ˆ˜ ํšจ๊ณผ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • React ์ปดํฌ๋„ŒํŠธ์—์„œ useEffect์˜ ์—ญํ• ์— ๋Œ€ํ•ด ์ดํ•ดํ•œ๋‹ค.
  • ๋ถ€์ˆ˜ํšจ๊ณผ์™€ ์ƒ๋ช…์ฃผ๊ธฐ์˜ ๊ฐœ๋…์— ๋Œ€ํ•ด ์ดํ•ดํ•œ๋‹ค.
  • useEffect๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ถ€์ˆ˜ํšจ๊ณผ๋ฅผ ๋‹ค๋ฃจ๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์ดํ•ดํ•œ๋‹ค.
  • ์˜์กด์„ฑ ๋ฐฐ์—ด์„ ์›ํ•˜๋Š” ์ƒํ™ฉ์— ๋งž๊ฒŒ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.
props โ€‹

์ปดํฌ๋„ŒํŠธ ๊ฐ„์˜ ๋ฐ์ดํ„ฐ ์ „๋‹ฌ ๋ฐฉ๋ฒ•์„ ์ดํ•ดํ•˜๊ณ , props๋ฅผ ํ†ตํ•ด ๋ถ€๋ชจ์™€ ์ž์‹ ์ปดํฌ๋„ŒํŠธ ๊ฐ„์— ์ •๋ณด๋ฅผ ์ฃผ๊ณ ๋ฐ›์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • props๋ฅผ ์ž์‹ ์ปดํฌ๋„ŒํŠธ์—์„œ๋Š” ์ˆ˜์ •ํ•  ์ˆ˜ ์—†๋‹ค๋Š” ๊ฒƒ์„ ์ดํ•ดํ•œ๋‹ค.
  • ๋ถ€๋ชจ ์ปดํฌ๋„ŒํŠธ์—์„œ props๋ฅผ ์ž์‹ ์ปดํฌ๋„ŒํŠธ๋กœ ์ „๋‹ฌํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ดํ•ดํ•œ๋‹ค.
  • ์ž์‹ ์ปดํฌ๋„ŒํŠธ์—์„œ ๋ถ€๋ชจ ์ปดํฌ๋„ŒํŠธ๋กœ๋ถ€ํ„ฐ ๋ฐ›์•„์˜จ props๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ดํ•ดํ•œ๋‹ค.
  • ๊ตฌ์กฐ ๋ถ„ํ•ด ํ• ๋‹น์˜ ๊ฐœ๋…์— ๋Œ€ํ•ด ์ดํ•ดํ•œ๋‹ค.
์ƒํƒœ ๋Œ์–ด์˜ฌ๋ฆฌ๊ธฐ โ€‹

์ƒํƒœ ๋Œ์–ด์˜ฌ๋ฆฌ๊ธฐ๋ฅผ ํ†ตํ•ด ์—ฌ๋Ÿฌ ์ปดํฌ๋„ŒํŠธ์—์„œ ๊ณต์œ ๋˜๋Š” ์ƒํƒœ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ดํ•ดํ•˜๊ณ , ๋‹จ๋ฐฉํ–ฅ ๋ฐ์ดํ„ฐ ํ๋ฆ„์˜ ์ค‘์š”์„ฑ์„ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์ƒํƒœ ๋Œ์–ด์˜ฌ๋ฆฌ๊ธฐ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ ์— ๋Œ€ํ•ด ์ดํ•ดํ•œ๋‹ค.
  • ๋‹จ๋ฐฉํ–ฅ ๋ฐ์ดํ„ฐ ํ๋ฆ„์— ๋Œ€ํ•ด ์ดํ•ดํ•œ๋‹ค.
  • ์‹ค์Šต ์ฝ”๋“œ๊ฐ€ ์ž‘๋™๋˜๋Š” ์›๋ฆฌ์— ๋Œ€ํ•ด ์ดํ•ดํ•œ๋‹ค.
  • ๋ถ€๋ชจ ์ปดํฌ๋„ŒํŠธ์—์„œ ๊ณตํ†ต์œผ๋กœ ์ƒํƒœ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ๊ฒƒ์— ๋Œ€ํ•œ ์žฅ์ ์„ ์ดํ•ดํ•œ๋‹ค.
ํด๋ž˜์Šคํ˜• ์ปดํฌ๋„ŒํŠธ ๋Œ€์‹  ํ•จ์ˆ˜ํ˜• ์ปดํฌ๋„ŒํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ  โ€‹

ํด๋ž˜์Šคํ˜• ์ปดํฌ๋„ŒํŠธ์™€ ํ•จ์ˆ˜ํ˜• ์ปดํฌ๋„ŒํŠธ์˜ ์ฐจ์ด๋ฅผ ์ดํ•ดํ•˜๊ณ , ํ•จ์ˆ˜ํ˜• ์ปดํฌ๋„ŒํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ ๋ฅผ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ํด๋ž˜์Šคํ˜• ์ปดํฌ๋„ŒํŠธ์˜ ์ƒ๋ช…์ฃผ๊ธฐ์— ๋Œ€ํ•ด์„œ ์ดํ•ดํ•œ๋‹ค.
  • ํด๋ž˜์Šคํ˜• ์ปดํฌ๋„ŒํŠธ์˜ ๊ตฌ์กฐ๋ฅผ ์ดํ•ดํ•œ๋‹ค.
  • ํด๋ž˜์Šคํ˜• ์ปดํฌ๋„ŒํŠธ ๋Œ€์‹  ํ•จ์ˆ˜ํ˜• ์ปดํฌ๋„ŒํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ ์— ๋Œ€ํ•ด ์ดํ•ดํ•˜๊ณ  ์žˆ๋‹ค.
map() ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๋ฐ์ดํ„ฐ๋กœ ์ปดํฌ๋„ŒํŠธ ์ƒ์„ฑํ•˜๊ธฐ โ€‹

map() ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ ๋ฐฐ์—ด๋กœ๋ถ€ํ„ฐ ์ปดํฌ๋„ŒํŠธ ๋ฆฌ์ŠคํŠธ๋ฅผ ๋™์ ์œผ๋กœ ์ƒ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • map() ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์ˆœํšŒํ•  ์ˆ˜ ์žˆ๋‹ค.
  • map() ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ด ๋ฐฐ์—ด์˜ ๊ฐ ์š”์†Œ๋ฅผ JSX ๋กœ ๋ฐ˜ํ™˜ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • map() ๋ฉ”์„œ๋“œ ์‚ฌ์šฉํ•ด JSX๋ฅผ ๋ Œ๋”๋ง ํ•  ๋•Œ key๊ฐ€ ํ•„์š”ํ•œ ์ด์œ ๋ฅผ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค.
filter() ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๋ฐ์ดํ„ฐ ํ•„ํ„ฐ๋งํ•˜๊ธฐ โ€‹

filter() ๋ฉ”์„œ๋“œ๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ํ•„ํ„ฐ๋งํ•˜๊ณ , ํ•„์š”ํ•œ ์ •๋ณด๋งŒ์„ ์ถ”์ถœํ•˜๋Š” ๊ธฐ๋ฒ•์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • filter() ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ํ•„ํ„ฐ๋งํ•  ์ˆ˜ ์žˆ๋‹ค.
  • filter() ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ํ•„ํ„ฐ๋งํ•˜๊ณ  map()๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ด JSX์š”์†Œ๋กœ ๋ฐ˜ํ™˜ํ•  ์ˆ˜ ์žˆ๋‹ค.
react-router-dom์œผ๋กœ ๋ผ์šฐํŒ…ํ•˜๊ธฐ โ€‹

react-router-dom์„ ์‚ฌ์šฉํ•˜์—ฌ SPA ๋‚ด์—์„œ ๋ผ์šฐํŒ…์„ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ดํ•ดํ•˜๊ณ  ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • React Router์˜ ์ปดํฌ๋„ŒํŠธ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
  • a ํƒœ๊ทธ์™€ Link ์ปดํฌ๋„ŒํŠธ์˜ ์ฐจ์ด๋ฅผ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • useNavigate ํ›…์„ ์‚ฌ์šฉํ•  ์ˆ˜์žˆ๋‹ค.
์‚ผํ•ญ ์—ฐ์‚ฐ์ž๋กœ ์กฐ๊ฑด๋ถ€ ๋ Œ๋”๋งํ•˜๊ธฐ โ€‹

์‚ผํ•ญ ์—ฐ์‚ฐ์ž์™€ ์กฐ๊ฑด๋ถ€ ๋ Œ๋”๋ง ๊ธฐ๋ฒ•์„ ์‚ฌ์šฉํ•˜์—ฌ, ์ธ๋””์ผ€์ดํ„ฐ์™€ ํ•จ๊ป˜ useSuspense(), React.lazy๋ฅผ ํ™œ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์‚ผํ•ญ์—ฐ์‚ฐ์ž๋ฅผ ์ดํ•ดํ•˜๊ณ  ์žˆ๋‹ค.
  • ์‚ผํ•ญ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์กฐ๊ฑด๋ถ€ ๋ Œ๋”๋งํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ์‚ผํ•ญ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•ด ์ปดํฌ๋„ŒํŠธ๋ฅผ ์กฐ๊ฑด๋ถ€ ๋ Œ๋”๋งํ•  ์ˆ˜ ์žˆ๋‹ค.
์ฐธ์กฐํ˜• ์ž๋ฃŒํ˜•์˜ ๋ถˆ๋ณ€์„ฑ ์œ ์ง€ํ•˜๊ธฐ โ€‹

์ฐธ์กฐ ์ž๋ฃŒํ˜•์˜ ํŠน์ง•์„ ์ดํ•ดํ•˜๊ณ , ์ƒํƒœ ๊ด€๋ฆฌ์—์„œ ์–•์€ ๋ณต์‚ฌ์™€ ๊นŠ์€ ๋ณต์‚ฌ, spread syntax์˜ ์‚ฌ์šฉ๋ฒ•์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • React ์ƒํƒœ ๊ด€๋ฆฌ์— ์žˆ์–ด์„œ ๋ถˆ๋ณ€์„ฑ์„ ์œ ์ง€ํ•˜๋Š” ๊ฒƒ์ด ์™œ ์ค‘์š”ํ•œ ์ง€ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ์›์‹œ ์ž๋ฃŒํ˜•์˜ ๋ถˆ๋ณ€์„ฑ์— ๋Œ€ํ•ด ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ์ฐธ์กฐ ์ž๋ฃŒํ˜•์€ ๋ณ€๊ฒฝ ๊ฐ€๋Šฅํ•œ ๊ฐ’์ด๋ผ๋Š” ๊ฒƒ์„ ์ดํ•ดํ•œ๋‹ค.
  • ์ฐธ์กฐ ์ž๋ฃŒํ˜•์„ ๋‹ค๋ฅธ ๋ณ€์ˆ˜์— ํ• ๋‹นํ•  ๊ฒฝ์šฐ ๊ฐ™์€ ์ฃผ์†Œ๊ฐ’์„ ์ฐธ์กฐํ•œ๋‹ค๋Š” ๊ฒƒ์— ๋Œ€ํ•ด ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ์ „๊ฐœ ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ฐธ์กฐ ์ž๋ฃŒํ˜•์„ ๋ณต์‚ฌํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ์ „๊ฐœ ์—ฐ์‚ฐ์ž, .slice(), Object.assign() ๋“ฑ์˜ ๋ฐฉ๋ฒ•์ด ์™œ ์–•์€ ๋ณต์‚ฌ์ธ์ง€ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค.
useCallback(), useMemo()๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์„ฑ๋Šฅ ์ตœ์ ํ™”ํ•˜๊ธฐ โ€‹

useCallback()๊ณผ useMemo()๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ปดํฌ๋„ŒํŠธ์˜ ๋ Œ๋”๋ง ์„ฑ๋Šฅ์„ ์ตœ์ ํ™”ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • useCallback()์ด ์–ด๋–ค ๊ธฐ๋Šฅ์„ ํ•˜๋Š” Hook์ธ์ง€ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ๋ฉ”๋ชจ์ด์ œ์ด์…˜์ด ๋ฌด์—‡์ธ์ง€ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • useCallback()์˜ ์‚ฌ์šฉ๋ฒ•์„ ์•Œ๊ณ  ์žˆ๋‹ค.
  • useCallback()์˜ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • useMemo()์ด ์–ด๋–ค ๊ธฐ๋Šฅ์„ ํ•˜๋Š” Hook์ธ์ง€ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • useMemo()์˜ ์‚ฌ์šฉ๋ฒ•์„ ์•Œ๊ณ  ์žˆ๋‹ค.
  • useMemo()์˜ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค.
useReducer(), useContext()๋กœ ์ƒํƒœ๊ด€๋ฆฌํ•˜๊ธฐ โ€‹

useReducer()์™€ useContext()๋ฅผ ์กฐํ•ฉํ•˜์—ฌ ๋ณต์žกํ•œ ์ƒํƒœ ๊ด€๋ฆฌ ๋กœ์ง์„ ๊ตฌํ˜„ํ•˜๋Š” ๊ณ ๊ธ‰ ๋ฐฉ๋ฒ•์„ ์ดํ•ดํ•˜๊ณ  ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • useReducer()๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ ๋ฅผ ์ดํ•ดํ•˜๊ณ  ์žˆ๋‹ค.
  • useReducer()๋ฅผ ๋งŒ๋“ค๊ณ  ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
  • useReducer์— ์˜ํ•ด ๋ฐ˜ํ™˜๋˜๋Š” dispatch ํ•จ์ˆ˜๊ฐ€ ์–ด๋–ค ์—ญํ• ์„ ํ•˜๋Š”์ง€ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • useContext()๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ ๋ฅผ ์ดํ•ดํ•˜๊ณ  ์žˆ๋‹ค.
  • useContext()๋ฅผ ๋งŒ๋“ค๊ณ  ์‚ฌ์šฉํ• ์ˆ˜ ์žˆ๋‹ค.
custom hooks โ€‹

custom hooks๋ฅผ ๋งŒ๋“ค์–ด ๋กœ์ง์„ ์žฌ์‚ฌ์šฉํ•˜๊ณ , ์ปดํฌ๋„ŒํŠธ ๊ฐ„์˜ ์ƒํƒœ ๊ด€๋ฆฌ ์ฝ”๋“œ๋ฅผ ๊ฐ„๊ฒฐํ•˜๊ฒŒ ์œ ์ง€ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • custom hook์„ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ ๋ฅผ ์ดํ•ดํ•˜๊ณ  ์žˆ๋‹ค.
  • custom hook์„ ๋งŒ๋“ค๊ณ  ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
  • custom hook ์‚ฌ์šฉ ๊ทœ์น™์— ๋Œ€ํ•ด ์ดํ•ดํ•œ๋‹ค.
  • ์‹ค์Šต์ฝ”๋“œ๊ฐ€ ๋™์ž‘ํ•˜๋Š” ์›๋ฆฌ์— ๋Œ€ํ•ด ์ดํ•ดํ•œ๋‹ค.

Node.js & Express

Node.js & Express

Node.js ํ•™์Šต ๋ชฉํ‘œ โ€‹

  1. Node.js๊ฐ€ ๋ฌด์—‡์ธ์ง€ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋‹ค.
  2. Node.js์˜ ์—ญ์‚ฌ์— ๋Œ€ํ•ด ์•Œ ์ˆ˜ ์žˆ๋‹ค.
  3. Node.js๋ฅผ ์ž์‹ ์˜ ์ปดํ“จํ„ฐ์— ์„ค์น˜ํ•˜๊ณ  ๋ฒ„์ „์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.
  4. Node.js REPL์„ ์‚ฌ์šฉํ•˜์—ฌ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค.
  5. Node.js์™€ ๋ธŒ๋ผ์šฐ์ €์˜ API ์ฐจ์ด์ ์„ ๊ตฌ๋ณ„ํ•  ์ˆ˜ ์žˆ๋‹ค.
  6. Node.js์—์„œ ๊ธ€๋กœ๋ฒŒ ๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ฐฐ์šธ ์ˆ˜ ์žˆ๋‹ค.
  7. Node.js์˜ ๋ชจ๋“ˆ ์‹œ์Šคํ…œ์„ ์ดํ•ดํ•˜๊ณ  ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
  8. HTTP ์„œ๋ฒ„๋ฅผ Node.js๋กœ ๊ตฌ์ถ•ํ•  ์ˆ˜ ์žˆ๋‹ค.
  9. Node.js์—์„œ ๋ชจ๋“ˆ์„ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ ๋ฅผ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค.
  10. ์ž์‹ ๋งŒ์˜ Node.js ๋ชจ๋“ˆ์„ ์ƒ์„ฑํ•˜๊ณ  ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.
  11. ๋ชจ๋“ˆ์—์„œ ํ•จ์ˆ˜์™€ ๊ฐ์ฒด๋ฅผ exportํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ฐฐ์šธ ์ˆ˜ ์žˆ๋‹ค.
  12. CommonJS์™€ ECMAScript ๋ชจ๋“ˆ ๊ฐ„์˜ ์ฐจ์ด๋ฅผ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋‹ค.
  13. Node.js์—์„œ ECMAScript ๋ชจ๋“ˆ์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ฐฐ์šธ ์ˆ˜ ์žˆ๋‹ค.
  14. ๋ชจ๋“ˆ ์บ์‹ฑ์ด Node.js์—์„œ ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•˜๋Š”์ง€ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋‹ค.
  15. npm์„ ์‚ฌ์šฉํ•˜์—ฌ ํŒจํ‚ค์ง€๋ฅผ ๊ด€๋ฆฌํ•˜๊ณ  ์„ค์น˜ํ•  ์ˆ˜ ์žˆ๋‹ค.
  16. npm์˜ ์˜์กด์„ฑ ๊ด€๋ฆฌ ๋ฐฉ๋ฒ•์„ ์ดํ•ดํ•˜๊ณ  **package-lock.json**์˜ ์—ญํ• ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.
  17. **npm audit**๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ณด์•ˆ ์ทจ์•ฝ์ ์„ ํ™•์ธํ•˜๊ณ  ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.
  18. npm ํŒจํ‚ค์ง€๋ฅผ ์ „์—ญ์ ์œผ๋กœ ์„ค์น˜ํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ฐฐ์šธ ์ˆ˜ ์žˆ๋‹ค.
  19. Yarn ํŒจํ‚ค์ง€ ๋งค๋‹ˆ์ €๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ฐฐ์šธ ์ˆ˜ ์žˆ๋‹ค.
  20. HTTP ์š”์ฒญ๊ณผ ์‘๋‹ต์˜ ๊ตฌ์กฐ๋ฅผ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋‹ค.
  21. ๋‹ค์–‘ํ•œ HTTP ์ƒํƒœ ์ฝ”๋“œ์™€ ๊ทธ ์˜๋ฏธ๋ฅผ ๋ฐฐ์šธ ์ˆ˜ ์žˆ๋‹ค.
  22. Express.js๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์›น ์„œ๋ฒ„๋ฅผ ๊ตฌ์ถ•ํ•  ์ˆ˜ ์žˆ๋‹ค.
  23. Express.js์—์„œ ๋ผ์šฐํŒ…์„ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ฐฐ์šธ ์ˆ˜ ์žˆ๋‹ค.
  24. RESTful API๋ฅผ ์„ค๊ณ„ํ•˜๊ณ  ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.
  25. Express.js์—์„œ ํŒŒ์ผ ์ „์†ก์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.
  26. Express.js์—์„œ ์ •์  ํŒŒ์ผ์„ ์„œ๋น„์Šคํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ฐฐ์šธ ์ˆ˜ ์žˆ๋‹ค.
  27. JWT๋ฅผ ์ด์šฉํ•œ ์ธ์ฆ ์‹œ์Šคํ…œ์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.
  28. Passport๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ณต์žกํ•œ ์ธ์ฆ ์‹œ์Šคํ…œ์„ ๊ตฌ์ถ•ํ•  ์ˆ˜ ์žˆ๋‹ค.
  29. Express์—์„œ ๋ฏธ๋“ค์›จ์–ด๋ฅผ ๊ตฌํ˜„ํ•˜๊ณ  ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.
  30. Semantic Versioning์„ ์ดํ•ดํ•˜๊ณ  ์ ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

Node.js ์ฒดํฌ ๋ฆฌ์ŠคํŠธ โ€‹

์„œ๋ฒ„ ๋™์ž‘ ์›๋ฆฌ

  • โ˜‘๏ธ ์„œ๋ฒ„์— ์š”์ฒญ์„ ๋ณด๋‚ด๋ฉด, ๊ทธ ์š”์ฒญ์ด ์–ด๋–ป๊ฒŒ ์ฒ˜๋ฆฌ๋˜๊ณ  ์‘๋‹ต์ด ์˜ค๋Š”์ง€ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‚˜์š”?
  • โ˜‘๏ธ React์—์„œ ๋งŒ๋“  ํ™”๋ฉด์ด ์„œ๋ฒ„์™€ ์–ด๋–ป๊ฒŒ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ ๋ฐ›๋Š”์ง€, ๊ทธ ๊ณผ์ •์„ ์ดํ•ดํ•˜๊ณ  ์žˆ๋‚˜์š”?

Node.js ๊ธฐ๋ณธ ๊ฐœ๋…

  • โ˜‘๏ธ Node.js๊ฐ€ ๋ฌด์—‡์ธ์ง€, ๊ทธ๋ฆฌ๊ณ  ์ด๋ฅผ ์‚ฌ์šฉํ•ด ์„œ๋ฒ„๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ์ด์œ ๋ฅผ ์•Œ๊ณ  ์žˆ๋‚˜์š”?
  • โ˜‘๏ธ Node.js์˜ ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ ๋ฐฉ์‹๊ณผ ์ด๋ฒคํŠธ ๋ฃจํ”„์— ๋Œ€ํ•ด ์ดํ•ดํ•˜๊ณ  ์žˆ๋‚˜์š”?

Node.js๋ฅผ ํ™œ์šฉํ•œ ์„œ๋ฒ„ ๊ตฌ์ถ•

  • โ˜‘๏ธ Node.js๋ฅผ ์‚ฌ์šฉํ•ด ๊ธฐ๋ณธ์ ์ธ HTTP ์š”์ฒญ๊ณผ ์‘๋‹ต์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฐ„๋‹จํ•œ ์›น ์„œ๋ฒ„๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‚˜์š”?
  • โ˜‘๏ธ Express๋ฅผ ์‚ฌ์šฉํ•ด ๋” ๋ณต์žกํ•œ ๋ผ์šฐํŒ… ๋ฐ ๋ฏธ๋“ค์›จ์–ด ์ฒ˜๋ฆฌ๋ฅผ ํฌํ•จํ•œ ์„œ๋ฒ„๋ฅผ ๊ตฌ์ถ•ํ•  ์ˆ˜ ์žˆ๋‚˜์š”?

ํ”„๋ก ํŠธ์—”๋“œ์™€ ๋ฐฑ์—”๋“œ์˜ ํ˜‘์—…

  • โ˜‘๏ธ ํ”„๋ก ํŠธ์—”๋“œ์™€ ๋ฐฑ์—”๋“œ๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ ๋ฐ›๋Š” ๋ฐฉ์‹์„ ์ดํ•ดํ•˜๊ณ , ์ด๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ”„๋กœ์ ํŠธ์—์„œ ํ˜‘์—…ํ•  ์ˆ˜ ์žˆ๋‚˜์š”?

์›น ์ธ์ฆ ๋ฐ ๋ณด์•ˆ ๊ธฐ์ดˆ

  • โ˜‘๏ธ Node.js์™€ Express๋ฅผ ์‚ฌ์šฉํ•ด ์ฟ ํ‚ค๋‚˜ ์„ธ์…˜์„ ํ™œ์šฉํ•œ ์ธ์ฆ ๊ธฐ๋Šฅ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‚˜์š”?
  • โ˜‘๏ธ ์‚ฌ์šฉ์ž๋ฅผ ์ธ์ฆํ•˜๊ณ  ๊ถŒํ•œ์„ ๊ด€๋ฆฌํ•˜๋Š” ์„œ๋ฒ„๋ฅผ ์ง์ ‘ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‚˜์š”? (7์ )
  • โ˜‘๏ธ JWT(ํ† ํฐ ๊ธฐ๋ฐ˜ ์ธ์ฆ)์„ ์‚ฌ์šฉํ•ด ๋ณด์•ˆ ๊ธฐ๋Šฅ์„ ๊ฐ–์ถ˜ ์ธ์ฆ ์‹œ์Šคํ…œ์„ ์„ค๊ณ„ํ•  ์ˆ˜ ์žˆ๋‚˜์š”?

OAuth 2.0์„ ํ™œ์šฉํ•œ ์†Œ์…œ ๋กœ๊ทธ์ธ

  • โ˜‘๏ธ Google, Facebook ๋“ฑ ์†Œ์…œ ๊ณ„์ •์„ ์ด์šฉํ•œ ๋กœ๊ทธ์ธ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•œ ๊ฒฝํ—˜์ด ์žˆ๋‚˜์š”?
  • โ˜‘๏ธ OAuth 2.0์„ ์‚ฌ์šฉํ•ด ์†Œ์…œ ๋กœ๊ทธ์ธ ๊ธฐ๋Šฅ์„ ์‹ค์ œ๋กœ ๋งŒ๋“ค์–ด๋ณธ ์ ์ด ์žˆ๋‚˜์š”?

๋ณด์•ˆ์„ฑ๊ณผ ํšจ์œจ์„ฑ์„ ๊ฐ–์ถ˜ ์„œ๋ฒ„ ์„ค๊ณ„

  • โ˜‘๏ธ Node.js์™€ Express๋ฅผ ํ™œ์šฉํ•ด ๋ณด์•ˆ์ด ๊ฐ•ํ™”๋œ ์„œ๋ฒ„๋ฅผ ์„ค๊ณ„ํ•˜๊ณ  ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‚˜์š”?
  • โ˜‘๏ธ ๋ณด์•ˆ์ด ์ค‘์š”ํ•œ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์•ˆ์ „ํ•˜๊ฒŒ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ์„œ๋ฒ„๋ฅผ ๊ตฌ์ถ•ํ•  ์ˆ˜ ์žˆ๋‚˜์š”?

Database

Database

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ•™์Šต ๋ชฉํ‘œ โ€‹

  1. ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๊ธฐ๋ณธ ๊ฐœ๋…์„ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค.
  2. SELECT ๋ฌธ๋ฒ•๊ณผ ๋‹ค์–‘ํ•œ ์กฐ๊ฑด์ ˆ (WHERE, ORDER BY, GROUP BY)์„ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
  3. ๋ฐ์ดํ„ฐ ์ค‘๋ณต ์ œ๊ฑฐ ๋ฐ ์ •๋ ฌ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์ดํ•ดํ•œ๋‹ค.
  4. ๋ฐ์ดํ„ฐ ์ง‘๊ณ„ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ง‘๊ณ„ํ•  ์ˆ˜ ์žˆ๋‹ค.
  5. CRUD (Create, Read, Update, Delete) ์ž‘์—…์„ SQL์„ ํ†ตํ•ด ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค.
  6. ๋‹ค์–‘ํ•œ JOIN ์œ ํ˜•(INNER, LEFT, RIGHT๋“ฑ)์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
  7. ๊ธฐ๋ณธ SQL ๋ฌธ๋ฒ•์„ ์ดํ•ดํ•˜๊ณ  ๊ฐ„๋‹จํ•œ ์ฟผ๋ฆฌ๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.
  8. ๋ฐ์ดํ„ฐ ํƒ€์ž…๊ณผ ์ œ์•ฝ ์กฐ๊ฑด์˜ ์ฐจ์ด์ ์— ๋Œ€ํ•ด ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค.
  9. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ •๊ทœํ™” ์›์น™์„ ์ดํ•ดํ•˜๊ณ  ์ ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
  10. ๋…ผ๋ฆฌ์  ๋ฐ์ดํ„ฐ ๋ชจ๋ธ๋ง์„ ํ†ตํ•ด ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋ฅผ ์ฒด๊ณ„์ ์œผ๋กœ ์„ค๊ณ„ํ•  ์ˆ˜ ์žˆ๋‹ค.
  11. 3-Tier ์•„ํ‚คํ…์ฒ˜์™€ ๋‹ค์–‘ํ•œ ์‹œ์Šคํ…œ ์•„ํ‚คํ…์ฒ˜(1Tier, 2Tier)์˜ ๊ตฌ์„ฑ๊ณผ ์žฅ๋‹จ์ ์„ ์ดํ•ดํ•œ๋‹ค.
  12. ๋Œ€ํ‘œ์ ์ธ BaaS์ธ Supabase๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ํฌํ•จ๋œ ๊ฐ„๋‹จํ•œ ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค.
  13. ORM(Object-Relational Mapping)์˜ ๊ฐœ๋…์„ ์ดํ•ดํ•˜๊ณ  Prisma๋ฅผ ํ™œ์šฉํ•œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ด€๋ฆฌ์˜ ์žฅ์ ์„ ํ•™์Šตํ•œ๋‹ค.

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ฒดํฌ๋ฆฌ์ŠคํŠธ โ€‹

๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค ๊ธฐ์ดˆ

  • โ˜‘๏ธ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๊ฐœ๋…๊ณผ ํ•„์š”์„ฑ์„ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‚˜์š”?
  • โ˜‘๏ธ ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค(RDB)์™€ ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ด€๋ฆฌ์‹œ์Šคํ…œ(RDBMS)์„ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‚˜์š”?

๋ฐ์ดํ„ฐ ๋ชจ๋ธ๋ง

  • โ˜‘๏ธ ๋ฐ์ดํ„ฐ ๋ชจ๋ธ๋ง ๊ณผ์ •์„ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‚˜์š”?
  • โ˜‘๏ธ ์š”๊ตฌ์‚ฌํ•ญ์„ ๋ณด๊ณ  ์Šค์Šค๋กœ ๋ฐ์ดํ„ฐ ๋ชจ๋ธ๋ง์„ ํ•  ์ˆ˜ ์žˆ๋‚˜์š”?
  • โ˜‘๏ธ ๋ฐ์ดํ„ฐ ์Šคํ‚ค๋งˆ๋ฅผ ๋ณด๊ณ  ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋งŒ ์กฐํšŒํ•  ์ˆ˜ ์žˆ๋‚˜์š”?

SQL

  • โ˜‘๏ธ supabase SQL์„ ํ™œ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์ƒ์„ฑ/์‚ญ์ œํ•  ์ˆ˜ ์žˆ๋‚˜์š”?
  • โ˜‘๏ธ supabase SQL์„ ํ™œ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ…Œ์ด๋ธ”์„ ์ƒ์„ฑ/์‚ญ์ œํ•  ์ˆ˜ ์žˆ๋‚˜์š”?
  • โ˜‘๏ธ supabase SQL์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๋ฐ์ดํ„ฐ ํƒ€์ž…์„ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‚˜์š”?
  • โ˜‘๏ธ supabase SQL์„ ํ™œ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”๊ฐ€/์กฐํšŒ/์ˆ˜์ •/์กฐํšŒํ•  ์ˆ˜ ์žˆ๋‚˜์š”?
  • โ˜‘๏ธ supabase SQL์„ ํ™œ์šฉํ•˜์—ฌ ์—ฌ๋Ÿฌ ํ…Œ์ด๋ธ”์˜ ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ํ•œ ๋ฒˆ์— ์กฐํšŒํ•  ์ˆ˜ ์žˆ๋‚˜์š”?

์„œ๋ฒ„์™€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค

  • โ˜‘๏ธ Prisma, supabase๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์ดˆ๊ธฐ ์„ค์ •, ์Šคํ‚ค๋งˆ ์ž‘์„ฑ, ์Šคํ‚ค๋งˆ ์ ์šฉ์„ ํ•  ์ˆ˜ ์žˆ๋‚˜์š”?
  • โ˜‘๏ธ ๊ฐ„๋‹จํ•œ ์š”๊ตฌ์‚ฌํ•ญ์— ๋Œ€ํ•ด Prisma๋กœ supabase ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— CRUD ์ฟผ๋ฆฌ๋ฅผ ๋ณด๋‚ผ ์ˆ˜ ์žˆ๋‚˜์š”?
  • โ˜‘๏ธ ํด๋ผ์ด์–ธํŠธ-์„œ๋ฒ„-๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค(3-Tier)๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœํ•œ ๊ฐ„๋‹จํ•œ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‚˜์š”?

AWS

AWS

AWS ํ•™์Šต ๋ชฉํ‘œ โ€‹

  1. AWS ๊ธฐ์ดˆ ๊ฐœ๋… ์ดํ•ด: S3, CloudFront, IAM ๋“ฑ์˜ ํ•ต์‹ฌ AWS ์„œ๋น„์Šค๋ฅผ ์ดํ•ดํ•˜๊ณ  ์šฉ๋„์™€ ๋ชฉ์ ์„ ํŒŒ์•…ํ•œ๋‹ค.
  2. S3 ๋ฒ„ํ‚ท ์ƒ์„ฑ ๋ฐ ์‚ฌ์šฉ: S3 ๋ฒ„ํ‚ท์„ ์ƒ์„ฑํ•˜๊ณ  ํŒŒ์ผ ์—…๋กœ๋“œ/๋‹ค์šด๋กœ๋“œ ๋ฐ ํผ๋ธ”๋ฆญ ์•ก์„ธ์Šค ์„ค์ •์„ ํ•™์Šตํ•œ๋‹ค.
  3. ํ”„๋ก ํŠธ์—”๋“œ ์ฝ”๋“œ ๋ฐฐํฌ: S3์— ํ”„๋ก ํŠธ์—”๋“œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋ฐฐํฌ๋ฅผ ํ•™์Šตํ•œ๋‹ค.
  4. HTTPS ์„ค์ •: ์ธ์ฆ์„œ๋ฅผ ACM(AWS Certificate Manager)์œผ๋กœ ์ƒ์„ฑํ•˜๊ณ , HTTPS ์„ค์ • ๋ฐฉ๋ฒ•์„ ์ตํžŒ๋‹ค.
  5. ๋ฐฐํฌ ์ž๋™ํ™”: Github Actions๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ CI/CD ๋„๊ตฌ๋ฅผ ํ™œ์šฉํ•ด ๋ฐฐํฌ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ž๋™ํ™”ํ•œ๋‹ค

AWS ์ฒดํฌ๋ฆฌ์ŠคํŠธ โ€‹

AWS ๊ธฐ์ดˆ ๊ฐœ๋… ์ดํ•ด

  • โ˜‘๏ธ ๋ฐฐํฌ์˜ ๊ฐœ๋…์„ ์ดํ•ดํ•˜๊ณ , ๋กœ์ปฌ ์„œ๋ฒ„์™€ ๋ฐฐํฌ ์„œ๋ฒ„์˜ ์ฐจ์ด๋ฅผ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‚˜์š”?
  • โ˜‘๏ธ AWS S3 ์„œ๋น„์Šค์˜ ์‚ฌ์šฉ ๋ชฉ์ ์„ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‚˜์š”?
  • โ˜‘๏ธ AWS CloudFront ์„œ๋น„์Šค์˜ ์‚ฌ์šฉ ๋ชฉ์ ์„ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‚˜์š”?
  • โ˜‘๏ธ AWS CloudFront๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ๋ฌดํšจํ™”๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ ๋ฅผ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‚˜์š”?
  • โ˜‘๏ธ AWS IAM ์„œ๋น„์Šค์˜ ์‚ฌ์šฉ ๋ชฉ์ ์„ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‚˜์š”?

S3 ๋ฒ„ํ‚ท ์ƒ์„ฑ ๋ฐ ์‚ฌ์šฉ

  • โ˜‘๏ธ S3 ๋ฒ„ํ‚ท์„ ์ƒ์„ฑํ•˜๊ณ  ํผ๋ธ”๋ฆญ ์•ก์„ธ์Šค์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‚˜์š”?
  • โ˜‘๏ธ S3 ๋ฒ„ํ‚ท์— ํŒŒ์ผ์„ ์—…๋กœ๋“œ/๋‹ค์šด๋กœ๋“œํ•  ์ˆ˜ ์žˆ๋‚˜์š”?

HTTPS ์„ค์ •

  • โ˜‘๏ธ ๋„๋ฉ”์ธ๊ณผ DNS์˜ ๊ฐœ๋…์„ ์ดํ•ดํ•˜๊ณ  ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‚˜์š”?
  • โ˜‘๏ธ URL๊ณผ URI์˜ ์ฐจ์ด๋ฅผ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‚˜์š”?
  • โ˜‘๏ธ HTTP์™€ HTTPS์˜ ์ฐจ์ด๋ฅผ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‚˜์š”?
  • โ˜‘๏ธ ACM(AWS Certificate Manager)์„ ์‚ฌ์šฉํ•ด HTTPS๋ฅผ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‚˜์š”?

๋ฐฐํฌ ์ž๋™ํ™”

  • โ˜‘๏ธ CI/CD์˜ ๊ฐœ๋…์„ ์ดํ•ดํ•˜๊ณ  ์ง€์†์  ํ†ตํ•ฉ(Continuous Integration)๊ณผ ์ง€์†์  ๋ฐฐํฌ(Continuous Deploy)์˜ ์ฐจ์ด๋ฅผ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‚˜์š”?
  • โ˜‘๏ธ Github Actions๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ CI/CD๋ฅผ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ๋‚˜์š”?

TypeScript

TypeScript ํ•™์Šต ๋ชฉํ‘œ โ€‹

  1. TypeScript๋ž€ ๋ฌด์—‡์ธ์ง€ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • โ˜‘๏ธ TypeScript๊ฐ€ ๋ฌด์—‡์ธ์ง€ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • โ˜‘๏ธ TypeScript ์˜ ๊ฐœ์š”์— ๋Œ€ํ•ด ์ดํ•ดํ•˜๊ณ  ์žˆ๋‹ค.
  • โ˜‘๏ธ TypeScript ์˜ ํŠน์ง•์— ๋Œ€ํ•ด ์ดํ–ํ•˜๊ณ  ์žˆ๋‹ค.
  1. JavaScript์™€ TypeScript์˜ ์ฐจ์ด์ ์„ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • โ˜‘๏ธ JS์™€ TS์˜ ์ฐจ์ด์ ์ด ๋ฌด์—‡์ธ์ง€ ์ดํ•ดํ•˜๊ณ  ์žˆ๋‹ค.
  • โ˜‘๏ธ JS์™€ ๋น„๊ตํ•œ TS์˜ ์žฅ์  ๋ฐ ํŠน์ง•์ด ๋ฌด์—‡์ธ์ง€ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • โ˜‘๏ธ TS์˜ ํƒ€์ž… ๊ฒ€์‚ฌ๊ฐ€ ์–ด๋–ป๊ฒŒ ์ด๋ฃจ์–ด์ง€๋Š” ์ง€ ์•Œ๊ณ  ์žˆ๋‹ค.
  • โ˜‘๏ธ JS์™€ TS์˜ ํƒ€์ž… ๊ฒ€์‚ฌ๋ฅผ ๋น„๊ตํ•˜์˜€์„ ๋•Œ TS์˜ ์žฅ์ ์ด ๋ฌด์—‡์ธ ์ง€ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค.
  1. TypeScript๋ฅผ ์„ค์น˜ํ•˜๊ณ  ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • โ˜‘๏ธ TypeScript ๋ฅผ ์ „์—ญ์œผ๋กœ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • โ˜‘๏ธ tsc ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด ๊ฐ„๋‹จํ•œ ์ปดํŒŒ์ผ ๊ณผ์ •์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค.
  1. TypeScript์˜ ๊ธฐ๋ณธ ๋™์ž‘ ์›๋ฆฌ๋ฅผ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋‹ค.
  • โ˜‘๏ธ ํƒ€์ž… ์‹œ์Šคํ…œ์ด ๋ฌด์—‡์ธ์ง€ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • โ˜‘๏ธ ํƒ€์ž… ์•ˆ์ •์„ฑ์ด ๋ฌด์—‡์ธ์ง€ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • โ˜‘๏ธ ํƒ€์ž… ์ถ”๋ก ์ด ๋ฌด์—‡์ธ์ง€ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • โ˜‘๏ธ ์ •์  ํƒ€์ž…๊ณผ ๋™์  ํƒ€์ž…์„ ๋น„๊ตํ•˜์—ฌ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • โ˜‘๏ธ ์ œ๋„ค๋ฆญ์ด ๋ฌด์—‡์ธ์ง€ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค.
  1. TypeScript ํ™˜๊ฒฝ์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • โ˜‘๏ธ tsconfig.json ํŒŒ์ผ์„ ์ดํ•ดํ•˜๊ณ  ์žˆ๋‹ค.
  • โ˜‘๏ธ tsconfig.json ํŒŒ์ผ ์† ์†์„ฑ๋“ค์„ ์ดํ•ดํ•˜๊ณ  ์žˆ๋‹ค.
  1. TypeScript๋กœ ๊ฐ„๋‹จํ•œ ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.
  • โ˜‘๏ธ TypeScript์˜ ๊ธฐ๋ณธ ํƒ€์ž… ์ข…๋ฅ˜์— ๋ฌด์—‡์ด ์žˆ๋Š”์ง€ ์•Œ๊ณ  ์žˆ๋‹ค.
  • โ˜‘๏ธ string ํƒ€์ž… ๊ฐœ๋… ๋ฐ ์‚ฌ์šฉ๋ฒ•์— ๋Œ€ํ•ด ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • โ˜‘๏ธ number ํƒ€์ž… ๊ฐœ๋… ๋ฐ ์‚ฌ์šฉ๋ฒ•์— ๋Œ€ํ•ด ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • โ˜‘๏ธ boolean ํƒ€์ž… ๊ฐœ๋… ๋ฐ ์‚ฌ์šฉ๋ฒ•์— ๋Œ€ํ•ด ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • โ˜‘๏ธ null ํƒ€์ž… ๊ฐœ๋… ๋ฐ ์‚ฌ์šฉ๋ฒ•์— ๋Œ€ํ•ด ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • โ˜‘๏ธ any ํƒ€์ž… ๊ฐœ๋… ๋ฐ ์‚ฌ์šฉ๋ฒ•์— ๋Œ€ํ•ด ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค.
  1. ๋ฐฐ์—ด ํƒ€์ž…์„ ์ •์˜ํ•˜๊ณ  ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
  • โ˜‘๏ธ ๋ฐฐ์—ด ํƒ€์ž…์„ ์ •์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • โ˜‘๏ธ ํ˜ผํ•ฉ ํƒ€์ž… ๋ฐฐ์—ด์— ๋Œ€ํ•ด ์ดํ•ดํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
  • โ˜‘๏ธ ๋ฐฐ์—ด ๋ฉ”์„œ๋“œ์™€ ํƒ€์ž… ์ถ”๋ก ์— ๋Œ€ํ•ด ์ดํ•ดํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
  1. ๊ฐ์ฒด ํƒ€์ž…์„ ์ •์˜ํ•˜๊ณ  ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
  • โ˜‘๏ธ TypeScript ๊ฐ์ฒด ํƒ€์ž…์ด ๋ฌด์—‡์ธ์ง€ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • โ˜‘๏ธ ์„ ํƒ์  ์†์„ฑ(Optional Properties)์ด ๋ฌด์—‡์ธ์ง€ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • โ˜‘๏ธ ์ฝ๊ธฐ ์ „์šฉ ์†์„ฑ(Readonly Properties)์ด ๋ฌด์—‡์ธ์ง€ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • โ˜‘๏ธ ํƒ€์ž… ๋ณ„์นญ์ด ๋ฌด์—‡์ธ์ง€ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค.
  1. ํ•จ์ˆ˜ ํƒ€์ž…์„ ์ •์˜ํ•˜๊ณ  ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
  • โ˜‘๏ธ ๋งค๊ฐœ๋ณ€์ˆ˜ ํƒ€์ž… ํ‘œ๊ธฐ์— ๋Œ€ํ•ด ์ดํ•ดํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
  • โ˜‘๏ธ ๋ฐ˜ํ™˜ ํƒ€์ž… ํ‘œ๊ธฐ์— ๋Œ€ํ•ด ์ดํ•ดํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
  • โ˜‘๏ธ ์ปจํ…์ŠคํŠธ ํƒ€์ž…์— ๋Œ€ํ•ด ์ดํ•ดํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
  1. ์œ ๋‹ˆ์–ธ ํƒ€์ž…์„ ์ •์˜ํ•˜๊ณ  ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
  • โ˜‘๏ธ ์œ ๋‹ˆ์–ธ ํƒ€์ž…์ด ๋ฌด์—‡์ธ์ง€ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • โ˜‘๏ธ ์œ ๋‹ˆ์–ธ ํƒ€์ž…์˜ ๊ธฐ๋ณธ ์‚ฌ์šฉ๋ฒ•์„ ์ดํ•ดํ•˜๊ณ  ์žˆ๋‹ค.
  • โ˜‘๏ธ ์œ ๋‹ˆ์–ธ ํƒ€์ž…์„ ๋ฐฐ์—ด์— ์ ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์•Œ๊ณ  ์žˆ๋‹ค.
  • โ˜‘๏ธ ๋ฆฌํ„ฐ๋Ÿด ํƒ€์ž…์ด ๋ฌด์—‡์ธ์ง€ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • โ˜‘๏ธ ํƒ€์ž… ๋ณ„์นญ(Type Aliases)์—์„œ ์œ ๋‹ˆ์–ธ ํƒ€์ž…์„ ์ •์˜ํ•  ์ˆ˜ ์žˆ๋‹ค.
  1. ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ •์˜ํ•˜๊ณ  ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
  • โ˜‘๏ธ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ •์˜ํ•˜๊ณ  ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.
  • โ˜‘๏ธ ์„ ํƒ์  ํ”„๋กœํผํ‹ฐ์™€ ์ฝ๊ธฐ ์ „์šฉ ํ”„๋กœํผํ‹ฐ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
  • โ˜‘๏ธ ์ธํ„ฐํŽ˜์ด์Šค ํ™•์žฅ์— ๋Œ€ํ•ด ์ดํ•ดํ•˜๊ณ  ์žˆ๋‹ค.
  • โ˜‘๏ธ ํƒ€์ž… ๋ณ„์นญ๊ณผ ์ธํ„ฐํŽ˜์ด์Šค์˜ ์ฐจ์ด์ ์„ ์ดํ•ดํ•˜๊ณ  ์žˆ๋‹ค.
  1. ํŠœํ”Œ์„ ์ •์˜ํ•˜๊ณ  ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
  • โ˜‘๏ธ TypeScript์—์„œ Tuple์ด ๋ฌด์—‡์ธ์ง€ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • โ˜‘๏ธ Tuple์„ ํ†ตํ•ด ์š”์†Œ์˜ ํƒ€์ž…๊ณผ ์ˆœ์„œ๋ฅผ ์ •์˜ํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์•Œ๊ณ  ์žˆ๋‹ค.
  • โ˜‘๏ธ Tuple์„ ์ดˆ๊ธฐํ™”ํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • โ˜‘๏ธ Tuple์˜ ์š”์†Œ ์ ‘๊ทผ ๋ฐ ๋ณ€๊ฒฝํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์•Œ๊ณ  ์žˆ๋‹ค.
  • โ˜‘๏ธ Tuple์„ ๊ตฌ์กฐ ๋ถ„ํ•ด ํ• ๋‹น(Destructuring)ํ•˜์—ฌ ๊ฐœ๋ณ„ ์š”์†Œ๋ฅผ ๋ณ€์ˆ˜์— ํ• ๋‹นํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์•Œ๊ณ  ์žˆ๋‹ค.
  1. ์—ด๊ฑฐํ˜•์„ ์ •์˜ํ•˜๊ณ  ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
  • โ˜‘๏ธ ๋ฌธ์žํ˜• Enum ์— ๋Œ€ํ•ด ์ดํ•ดํ•˜๊ณ  ์žˆ๋‹ค.
  • โ˜‘๏ธ ์ˆซ์žํ˜• Enum ์— ๋Œ€ํ•ด ์ดํ•ดํ•˜๊ณ  ์žˆ๋‹ค.
  • โ˜‘๏ธ Enum์„ switch ๋ฌธ๊ณผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
  1. ํƒ€์ž… ์ถ”๋ก ๊ณผ ํƒ€์ž… ๋‹จ์–ธ์„ ์ดํ•ดํ•˜๊ณ  ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
  • โ˜‘๏ธ ํƒ€์ž… ์ถ”๋ก ์˜ ๊ฐœ๋… ๋ฐ ํŠน์ง•์— ๋Œ€ํ•ด ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • โ˜‘๏ธ ํƒ€์ž… ์ถ”๋ก ์˜ ์ฃผ์š” ๊ฐœ๋… ์ค‘ ์ž๋™ ํƒ€์ž… ๊ฒฐ์ •์ด ๋ฌด์—‡์ธ์ง€ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • โ˜‘๏ธ ํƒ€์ž… ์ถ”๋ก ์˜ ์ฃผ์š” ๊ฐœ๋… ์ค‘ ๋ฌธ๋งฅ ๊ธฐ๋ฐ˜ ์ถ”๋ก ์ด ๋ฌด์—‡์ธ์ง€ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • โ˜‘๏ธ ํƒ€์ž… ์ถ”๋ก ์˜ ์ฃผ์š” ๊ฐœ๋… ์ค‘ ํƒ€์ž… ์„ ์–ธ ์ƒ๋žต์ด ๋ฌด์—‡์ธ์ง€ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • โ˜‘๏ธ ํƒ€์ž… ๋‹จ์–ธ์— ๋Œ€ํ•ด ์ดํ•ดํ•˜๊ณ  ์žˆ๋‹ค.
  • โ˜‘๏ธ ํƒ€์ž… ๋‹จ์–ธ์„ ์–ธ์ œ ์‚ฌ์šฉํ•˜๋Š”์ง€ ์•Œ๊ณ  ์žˆ๋‹ค.
  • โ˜‘๏ธ ํƒ€์ž… ๋‹จ์–ธ ์‚ฌ์šฉ์‹œ ์ฃผ์˜์‚ฌํ•ญ์— ๋Œ€ํ•ด ์ดํ•ดํ•˜๊ณ  ์žˆ๋‹ค.
  1. ํด๋ž˜์Šค๋ฅผ ์ •์˜ํ•˜๊ณ  ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
  • โ˜‘๏ธ Classes์˜ ๊ฐœ๋… ๋ฐ ํŠน์ง•์„ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • โ˜‘๏ธ Classse๋ฅผ ์ •์˜ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ๊ณ  ์žˆ๋‹ค.
  • โ˜‘๏ธ ์ ‘๊ทผ ์ œ์–ด์ž (Access Modifiers)์˜ ๊ฐœ๋…์„ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • โ˜‘๏ธ ์ธํ„ฐํŽ˜์ด์Šค๋กœ ํด๋ž˜์Šค์˜ ๊ตฌ์กฐ๋ฅผ ์ •์˜ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ๊ณ  ์žˆ๋‹ค.
  1. ์ œ๋„ค๋ฆญ์„ ์ •์˜ํ•˜๊ณ  ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
  • โ˜‘๏ธ ์ œ๋„ค๋ฆญ์— ๋Œ€ํ•ด ์ดํ•ดํ•˜๊ณ  ์žˆ๋‹ค.
  • โ˜‘๏ธ ์ œ๋„ค๋ฆญ ํ•จ์ˆ˜์— ๋Œ€ํ•ด ์ดํ•ดํ•˜๊ณ  ์žˆ๋‹ค.
  • โ˜‘๏ธ ์ œ๋„ค๋ฆญ ์ธํ„ฐํŽ˜์ด์Šค์— ๋Œ€ํ•ด ์ดํ•ดํ•˜๊ณ  ์žˆ๋‹ค.
  1. ์ œ๋„ค๋ฆญ ํ•จ์ˆ˜๋ฅผ ์ž‘์„ฑํ•˜๊ณ  ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
  • โ˜‘๏ธ ์ œ๋„ค๋ฆญ ํด๋ž˜์Šค์˜ ๊ฐœ๋… ๋ฐ ํŠน์ง•์— ๋Œ€ํ•ด ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • โ˜‘๏ธ ์ œ๋„ค๋ฆญ ํด๋ž˜์Šค์˜ ๊ธฐ๋ณธ ๊ตฌ์กฐ์— ๋Œ€ํ•ด ์•Œ๊ณ  ์žˆ๋‹ค.
  • โ˜‘๏ธ ์ œ๋„ค๋ฆญ ํด๋ž˜์Šค์˜ ๊ธฐ๋ณธ ๊ตฌ์กฐ๋ฅผ ์‹ค์ œ๋กœ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.
  • โ˜‘๏ธ ์ œ๋„ค๋ฆญ ํด๋ž˜์Šค์˜ ํƒ€์ž… ์ œํ•œ์— ๋Œ€ํ•ด ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค.
  1. TypeScript์™€ DOM์„ ํ•จ๊ป˜ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
  2. ํƒ€์ž… ์ขํžˆ๊ธฐ(Type Narrowing)๋ฅผ ์ดํ•ดํ•˜๊ณ  ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
  3. ๊ณ ๊ธ‰ ํƒ€์ž…๊ณผ ์œ ํ‹ธ๋ฆฌํ‹ฐ ํƒ€์ž…์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.