Frontend knowledge

Frontend knowledge

Tags
Frontend
Published
December 23, 2022
Author

UI/UX

UI (USER INTERFACE)

  • UI๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์ œํ’ˆ์ด๋‚˜ ์„œ๋น„์Šค๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ๋งˆ์ฃผํ•˜๊ฒŒ ๋˜๋Š” ๋ฉด
  • ์ฆ‰, ์‚ฌ์šฉ์ž๊ฐ€ ์ œํ’ˆ์ด๋‚˜ ์„œ๋น„์Šค์™€ ์ƒํ˜ธ์ž‘์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ๋งŒ๋“ค์–ด์ง„ ๋งค๊ฐœ์ฒด์ธ ๊ฒƒ์ด์ง€์š”
  • UI ๋””์ž์ธ์€ ํฐํŠธ, ์นผ๋ผ, ๋ ˆ์ด์•„์›ƒ๊ณผ ๊ฐ™์ด ์‚ฌ์šฉ์ž๊ฐ€ ๋งˆ์ฃผํ•˜๊ฒŒ ๋  ์‹œ๊ฐ์ ์ธ ๋””์ž์ธ

UX (USER EXPERIENCE)

  • UX๋Š” ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์˜ ์•ฝ์ž๋กœ, ์‚ฌ์šฉ์ž๊ฐ€ ์–ด๋– ํ•œ ์„œ๋น„์Šค๋‚˜ ์ œํ’ˆ์„ ์ง๊ฐ„์ ‘์ ์œผ๋กœ ์ด์šฉํ•˜๋ฉด์„œ ๋Š๋ผ๋Š” ์ข…ํ•ฉ์ ์ธ ๋งŒ์กฑ์„ ์˜๋ฏธ
  • UX ๋””์ž์ธ์ด๋ž€ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋งŒ์กฑ์Šค๋Ÿฌ์šด ๊ฒฝํ—˜์„ ์ œ๊ณตํ•˜๋Š” UI๋ฅผ ๋””์ž์ธ ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
  • ์ฆ‰, ์‚ฌ์šฉ์ž๊ฐ€ ๋งŒ์กฑํ•  ์ˆ˜ ์žˆ๋„๋ก ์‚ฌ์šฉ์ž ์ค‘์‹ฌ์ ์œผ๋กœ ์„ค๊ณ„๋œ ๋””์ž์ธ์ด๋ผ๊ณ  ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

CSR (client-side rendering)

  • spa(์‹ฑ๊ธ€ ํŽ˜์ด์ง€ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜)์€ ๋ Œ๋”๋ง ๋ฐฉ์‹์œผ๋กœ ์ฑ„ํƒํ•จ
  • ์‚ฌ์šฉ์ž์˜ ์š”์ฒญ์— ๋”ฐ๋ผ ํ•„์š”ํ•œ ๋ถ€๋ถ„๋งŒ ์‘๋‹ต ๋ฐ›์•„ ๋ Œ๋”๋งํ•˜๋Š” ๋ฐฉ์‹
  • ํด๋ผ์ด์–ธํŠธ์—์„œ ์ดˆ๊ธฐํ™”๋ฉด์„ ๋กœ๋“œํ•˜๊ธฐ ์œ„ํ•ด ์„œ๋ฒ„์— ์š”์ฒญ
  • ์ดˆ๊ธฐ ๋กœ๋”ฉ ์‹œ๊ฐ„์ด ๋” ์˜ค๋ž˜ ๊ฑธ๋ฆผ

SSR (server-side rendering)

  • SSR์„ ์‚ฌ์šฉํ•˜๋ฉด ๋ชจ๋“  ๋ฐ์ดํ„ฐ๊ฐ€ ๋งคํ•‘๋œ ์„œ๋น„์Šค ํŽ˜์ด์ง€๋ฅผ ํด๋ผ์ด์–ธํŠธ(๋ธŒ๋ผ์šฐ์ €)์—๊ฒŒ ๋ฐ”๋กœ ๋ณด์—ฌ์ค„ ์ˆ˜ ์žˆ๋‹ค.
  • ์„œ๋ฒ„๋ฅผ ์ด์šฉํ•ด์„œ ํŽ˜์ด์ง€๋ฅผ ๊ตฌ์„ฑํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํด๋ผ์ด์–ธํŠธ์—์„œ ๊ตฌ์„ฑํ•˜๋Š” CSR(client-side rendering)๋ณด๋‹ค ํŽ˜์ด์ง€๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ์†๋„๋Š” ๋Šฆ์–ด์ง€์ง€๋งŒ ์ „์ฒด์ ์œผ๋กœ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ณด์—ฌ์ฃผ๋Š” ์ฝ˜ํ…์ธ  ๊ตฌ์„ฑ์ด ์™„๋ฃŒ๋˜๋Š” ์‹œ์ ์€ ๋นจ๋ผ์ง„๋‹ค๋Š” ์žฅ์ ์ด ์žˆ๋‹ค.
  • ๋ฐ˜๋ฉด CSR์€ SSR๋ณด๋‹ค ์ดˆ๊ธฐ ์ „์†ก๋˜๋Š” ํŽ˜์ด์ง€์˜ ์†๋„๋Š” ๋น ๋ฅด์ง€๋งŒ ์„œ๋น„์Šค์—์„œ ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ํด๋ผ์ด์–ธํŠธ(๋ธŒ๋ผ์šฐ์ฆˆ)์—์„œ ์ถ”๊ฐ€๋กœ ์š”์ฒญํ•˜์—ฌ ์žฌ๊ตฌ์„ฑํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ „์ฒด์ ์ธ ํŽ˜์ด์ง€ ์™„๋ฃŒ ์‹œ์ ์€ SSR๋ณด๋‹ค ๋Š๋ ค์ง„๋‹ค.
ย 
notion image
notion image
notion image

SEO(๊ฒ€์ƒ‰์—”์ง„ ์ตœ์ ํ™”)

  • ๊ฒ€์ƒ‰์—”์ง„์ด ์›น ํฌ๋กค๋ง ํ•˜๋ฉด์„œ ํŽ˜์ด์ง€์— ์ปจํ…์ธ  ์ƒ‰์ธ์„ ์ƒ์„ฑํ•˜๋Š” ๊ณผ์ •

SPA (single-page application)

  • ๋‹จ์ผ ํŽ˜์ด์ง€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์œผ๋กœ, ํ˜„์žฌ์˜ ํŽ˜์ด์ง€๋ฅผ ๋™์ ์œผ๋กœ ์ž‘์„ฑํ•จ์œผ๋กœ์จ ์‚ฌ์šฉ์ž์™€ ์†Œํ†ตํ•˜๋Š” ์›น ์—ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด๋‹ค.
  • ์—ฐ์†๋˜๋Š” ํŽ˜์ด์ง€ ๊ฐ„์˜ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์„ ํ–ฅ์ƒ์‹œํ‚ค๊ณ , ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ๋ฐ์Šคํฌํ†ฑ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ฒ˜๋Ÿผ ๋™์ž‘ํ•˜๋„๋ก ๋„์™€์ค€๋‹ค.
notion image

Reverse Proxy

notion image
  • ์‚ฌ์šฉ์ž์˜ ์š”์ฒญ์ด ํ”„๋ก์‹œ ์„œ๋ฒ„๋ฅผ ํ†ตํ•ด ์›น ์„œ๋ฒ„์— ์ „๋‹ฌ๋˜๊ณ  ์›น ์„œ๋ฒ„๊ฐ€ ์ฒ˜๋ฆฌํ•œ ์‘๋‹ต์ด ๋‹ค์‹œ ํ”„๋ก์‹œ ์„œ๋ฒ„๋ฅผ ํ†ตํ•ด ํด๋ผ์ด์–ธํŠธ๋กœ ์ „๋‹ฌ๋œ๋‹ค.
  • reverse proxy๋Š” ์ฃผ๋กœ ๋‚ด๋ถ€ ๋„คํŠธ์›Œํฌ์™€ ์™ธ๋ถ€ ๋„คํŠธ์›Œํฌ ์‚ฌ์ด๋ฅผ ๋ถ„๋ฆฌํ•ด ๋ณด์•ˆ ์ด์Šˆ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋˜์ง€๋งŒ ๋ธ”๋กœ๊ทธ์—์„œ๋Š” ์ ์ง„์ ์ธ URL ๋‹จ์œ„ ๋ฐฐํฌ๋ฅผ ์œ„ํ•ด ์ด๋ฅผ ์ด์šฉ

API

  • Application Programming Interface, ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์ธํ„ฐํŽ˜์ด์Šค
  • ์‘์šฉํ”„๋กœ๊ทธ๋žจ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก, ์šด์˜์ฒด์ œ๋‚˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๊ฐ€ ์ œ๊ณตํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์ œ์–ดํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋งŒ๋“  ์ธํ„ฐํŽ˜์ด์Šค
  • UI๊ฐ€ ์‚ฌ์šฉ์ž์™€ ์‚ฌ์šฉ์ž๊ฐ€ ๋‹ค๋ฃฐ ๋Œ€์ƒ์„ ํ•œ๋‹ค๋ฉด, API๋Š” ํ”„๋กœ๊ทธ๋žจ๊ณผ ๋˜ ๋‹ค๋ฅธ ํ”„๋กœ๊ทธ๋žจ์„ ์—ฐ๊ฒฐํ•ด์ฃผ๋Š” ์ผ์ข…์˜ ๋‹ค๋ฆฌ๋ผ๊ณ  ๋ณผ ์ˆ˜ ์žˆ๋‹ค.
  • ๋‚ด๊ฐ€ ๋งŒ๋“  ์„œ๋น„์Šค๊ฐ€ ๊ฐœ์ธ ๊ฐœ๋ฐœ์ž,๊ธฐ์—…,๊ธฐ๊ด€์ด ์ œ๊ณตํ•˜๋Š” ๊ธฐ๋Šฅ, ํ”„๋กœ๊ทธ๋žจ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ๋” ๋„์™€์ฃผ๋Š” ์ค‘๊ฐ„ ๋งค๊ฐœ์ฒด๋ผ๊ณ  ์ดํ•ดํ•˜๋ฉด ๋จ

Rest

  • Representational State Transfer
  • ์ž์›์„ ํ‘œํ˜„(์ด๋ฆ„)์œผ๋กœ ๊ตฌ๋ถ„ํ•˜์—ฌ ํ•ด๋‹น ์ž์›์˜ ์ •๋ณด๋ฅผ ์ฃผ๊ณ  ๋ฐ›๋Š” ๋ชจ๋“  ๊ฒƒ์„ ์˜๋ฏธ
  • ์ •๋ณด๋ฅผ ์ „๋‹ฌํ•˜๋Š” ๊ฒƒ์€ ๋ฐ์ดํ„ฐ๊ฐ€ ์š”์ฒญ๋˜์–ด์ง€๋Š” ์‹œ์ ์—์„œ ์ž์›์˜ ์ƒํƒœ(์ •๋ณด)๋ฅผ ์ „๋‹ฌ
  • ์ฆ‰ json ํ˜น์€ xml๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ  ๋ฐ›๋Š” ๊ฒƒ์œผ๋กœ ์ƒ๊ฐํ•˜์ž

REST API

  • REST๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์„œ๋น„์Šค API๋ฅผ ๊ตฌํ˜„ํ•œ ๊ฒƒ
  • REST๋Š” HTTP ํ‘œ์ค€์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ตฌํ˜„ํ•˜๊ณ , HTTP๋ฅผ ์ง€์›ํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ ์–ธ์–ด๋กœ ํด๋ผ์ด์–ธํŠธ. ์„œ๋ฒ„๋ฅผ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ์ฆ‰, REST API๋ฅผ ์ œ์ž‘ํ•˜๋ฉด ๋ธํŒŒ์ด ํด๋ผ์ด์–ธํŠธ ๋ฟ ์•„๋‹ˆ๋ผ, ์ž๋ฐ”, C#์›น ๋“ฑ์„ ์ด์šฉํ•ด ํด๋ผ์ด์–ธํŠธ๋ฅผ ์ œ์ž‘ํ•  ์ˆ˜ ์žˆ๋‹ค.

CORS

  • CORS(Cross-Origin Resource Sharing)๋ž€ ?
    • ์ถ”๊ฐ€ย HTTPํ—ค๋”๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ,ย ํ•œ ์ถœ์ฒ˜(origin)์—์„œ ์‹คํ–‰ ์ค‘์ธ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ดย ๋‹ค๋ฅธ ์ถœ์ฒ˜(origin)์˜ย ์„ ํƒํ•œ ์ž์›์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•˜๋„๋ก ๋ธŒ๋ผ์šฐ์ €์— ์•Œ๋ ค์ฃผ๋Š” ์ฒด์ œ
  • ํ•ด๊ฒฐ
    • package.json ํŒŒ์ผ์— โ€œproxyโ€ : โ€œhttp://localhost:8080" ์ถ”๊ฐ€

ESLint

ES(javascript) + Lint(์˜ค๋ฅ˜๊ฒ€์‚ฌ๊ธฐ)
javascript ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜์ง€ ์•Š๊ณ ๋„, ์˜ค๋ฅ˜๋ฅผ ๋ฐœ๊ฒฌํ•ด ์•Œ๋ ค์ฃผ๋Š” Node.js ํŒจํ‚ค์ง€

Prettier

ํŒŒ์ผ์„ ์ €์žฅํ•  ๋•Œ๋งˆ๋‹ค, ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉ์ž๊ฐ€ ์›ํ•˜๋Š” ํ˜•์‹์œผ๋กœ ๋ชจ์–‘์„ ์˜ˆ์˜๊ฒŒ ๋งŒ๋“ค์–ด์ฃผ๋Š” Node.js ํŒจํ‚ค์ง€