TIL_221116 ๐Ÿ€โœ…JS_SPA, Database

์ •์œค์ˆ™ยท2022๋…„ 11์›” 16์ผ
0

TIL

๋ชฉ๋ก ๋ณด๊ธฐ
17/192

๋‚ด์ผ๋ฐฐ์›€์บ ํ”„ 4๊ธฐ ์ŠคํŒŒ๋ฅดํƒ€์ฝ”๋”ฉ React B๋ฐ˜


๐Ÿ“’ ์˜ค๋Š˜์˜ ๊ณต๋ถ€

1. JS๋กœ ํ•˜๋Š” SPA ํŠน๊ฐ•

  • MPA์™€ SPA์˜ ์ฐจ์ด

    • SPA(Single Page Application): client side rendering
      -> ๋” ๋น ๋ฅด๊ณ  ์‚ฌ์šฉ๊ฐ์ด ์ข‹๋‹ค
    • MPA(Mulit Page Application) : server side rendering
  • JS SPA์—์„œ Hashed Routing์ด ํ•„์š”ํ•œ ์ด์œ 

    • Hashed url path: ์ฃผ์†Œ+#
      -> # ๋’ท ๋ถ€๋ถ„ : ํ˜ธ์ŠคํŒ… ์„œ๋ฒ„์—์„œ๋Š” ๋กœ์ปฌ๋กœ ์ทจ๊ธ‰
    • ๋ธŒ๋ผ์šฐ์ €์˜ ๋””ํดํŠธ ๊ธฐ๋Šฅ : ์ƒˆ๋กœ๊ณ ์นจ์„ ํ•˜๋ฉด GET ์š”์ฒญ
      -์ฃผ์†Œ#about ๋กœ ์ฒซ ๋žœ๋”ฉ ํ˜น์€ ์ƒˆ๋กœ๊ณ ์นจ
      -> ๋ธŒ๋ผ์šฐ์ €๋Š” index.html ํŒŒ์ผ ํ•˜๋‚˜๋งŒ ๋กœ๋“œ
    • ์ฃผ์†Œ/about ๋กœ ์ฒซ ๋žœ๋”ฉ ํ˜น์€ ์ƒˆ๋กœ๊ณ ์นจ
      -> ๋ธŒ๋ผ์šฐ์ €๋Š” ํ˜ธ์ŠคํŒ… ์„œ๋ฒ„์— /about์— ํ•ด๋‹นํ•˜๋Š” ๋ณ„๋„์˜ ํŽ˜์ด์ง€๋ฅผ ์š”์ฒญํ•˜๋ฉฐ ์˜ค๋ฅ˜๊ฐ€ ๋‚œ๋‹ค(404 Not Found)
  • ๊ณต์œ ๋ฐ›์€ ์ฝ”๋“œ ๋ณด๋ฉด์„œ ์ดํ•ดํ•˜๊ธฐ

    โ‘  route(event)ํ•จ์ˆ˜๊ฐ€ ์‹คํ–‰

    โ‘กpreventDefault(): ์ƒˆ๋กœ๊ณ ์นจ ๋ฐฉ์ง€
    ์ฃผ์†Œ์— โ‘ ์˜ a ํƒœ๊ทธ์— ์žˆ๋Š” hash๊ฐ€ ๋ถ™์Œ

โ‘ข ํ•ด์‰ฌ๊ฐ€ ๋ณ€๊ฒฝ ๋˜๋ฉด handleLocation ํ•จ์ˆ˜ ์‹คํ–‰
โ‘ฃ #๋ฅผ ๊ณต๋ฐฑ์œผ๋กœ ๋งŒ๋“ค๊ณ  ๊ฒฝ๋กœ๋ฅผ ์„ค์ •
โ‘ค routes์—์„œ ๊ฒฝ๋กœ์— ๋”ฐ๋ผ html ํŒŒ์ผ์„ ๊ฐ€์ ธ์˜จ๋‹ค.
text()ํ•จ์ˆ˜๋กœ data๋ฅผ ๋ฌธ์ž๋กœ ์„ค์ •
โ‘ฅ main-page์— ํ•ด๋‹น html์„ ๊ฐ€์ ธ์™€ ๋ณด์—ฌ์ค€๋‹ค
temp_html์„ ์ด์šฉํ•œ ๊ฒƒ๊ณผ ๋น„์Šท
โ‘ฆ ์ƒˆ๋กœ๊ณ ์นจ ์‹œ โ‘ฃ์—์„œ path = "/" -> routes์—์„œ ํ•ด๋‹น html์„ ๊ฐ€์ ธ์˜จ๋‹ค

  • ์ƒ์‹
    • vscode์—์„œ html ํŒŒ์ผ์„ ์—ฐ ์ƒํƒœ๋กœ 'go live' ํ•˜์ง€ ๋ง ๊ฒƒ
      -> html์„ ์ œ์™ธํ•œ ํŒŒ์ผ์„ ์„ ํƒํ•œ ์ƒํƒœ์—์„œ 'go live'ํ•ด์•ผ ๋„๋ฉ”์ธ(127.0.0.1)์ฃผ์†Œ๋งŒ ๋œฌ๋‹ค!
    • Loopback
      -> ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์ž์‹ ์˜ ์„œ๋ฒ„์— ์ ‘๊ทผํ•˜๋Š” ๊ฒฝ์šฐ
      -> Loopback IP address = 127.0.0.1
  • ์งˆ๋ฌธ&๋‹ต๋ณ€
    • ํ•œ html์— ์—ฌ๋Ÿฌ ์ปดํฌ๋„ŒํŠธ ๋„ฃ์–ด๋„ ๋จ(React์—์„œ)
    • ์ปดํฌ๋„ŒํŠธ๋ณ„๋กœ js, cssํŒŒ์ผ์ด ๋ถ„๋ฆฌ๋˜์–ด ์žˆ์„ ๊ฒฝ์šฐ ์ดˆ๊ธฐ์— ํ•œ ๋ฒˆ์— ์š”์ฒญ์„ ํ•ด์•ผ ํ•˜๋Š”๊ฐ€?
      -> ๋ณ„๋„์˜ ์กฐ์น˜๋ฅผ ์ทจํ•˜์ง€ ์•Š์œผ๋ฉด ์ปดํฌ๋„ŒํŠธ ๋ณ„๋กœ js, css ํŒŒ์ผ์„ ๋ถ„๋ฆฌ๋ฅผ ํ•˜๋“  ์•ˆ ํ•˜๋“  ์ฒ˜์Œ์— ๋‹ค ๋‹ค์šด๋ฐ›๋Š”๋‹ค.
    • ๋„ค์ด๋ฒ„ ํŽ˜์ด์ง€๋ผ๊ณ  ํ•œ๋‹ค๋ฉด ํฌ๊ฒŒ ๋กœ๊ทธ์ธ์ฐฝ ์ปดํฌ๋„ŒํŠธ, ๊ฒ€์ƒ‰์ฐฝ ์ปดํฌ๋„ŒํŠธ ๋“ฑ์œผ๋กœ ๋‚˜๋ˆ  ๋ณผ์ˆ˜ ์žˆ๋‹ค.
  • SPA vs MPA์™€ SSR vs CSR ์žฅ๋‹จ์ 
    https://hanamon.kr/spa-mpa-ssr-csr-%EC%9E%A5%EB%8B%A8%EC%A0%90-%EB%9C%BB%EC%A0%95%EB%A6%AC/

2. SP_์›น ํผ๋ธ”๋ฆฌ์‹ฑ ๊ฐ•์˜

  • 3์ฃผ์ฐจ
    • ๊ฐ€๋กœ ์Šฌ๋ผ์ด๋” ๋งŒ๋“ค๊ธฐ
    • ํ˜ธํ™˜์„ฑ์ด ํ•„์š”ํ•œ ์ฝ”๋“œ๋Š” ์•ž์— -webkit- ๋ถ™์ž„
      -webkit-border-radius
    • Box๋ฅผ ๋จผ์ € ๋งŒ๋“  ๋’ค Swiper ์ ์šฉ
      -> container(+class) - wrapper - slider ๊ตฌ์กฐ

โœ…

๋ฌธ์ œ

  • ์นด๋“œ ์Šฌ๋ผ์ด๋“œ ๋‚ด์šฉ์ด ๊ฐ€๋กœ๋กœ ๊ธธ๊ฒŒ ๋ชจ๋‘ ๋ณด์ด๋Š” ์ƒํƒœ
    • .sc_timesquare .card_wrap์—์„œ
      overflow: hidden์ด ์ฃผ์„์ฒ˜๋ฆฌ ๋˜์–ด ์žˆ์—ˆ์Œ
      -> hidden์œผ๋กœ ํ•˜๋‹ˆ ํ•ด๊ฒฐ๋์ง€๋งŒ
  • ์Šฌ๋ผ์ด๋“œ์˜ ์ขŒ์šฐ ๋ฒ„ํŠผ์— ๋‹ค์Œ ์นด๋“œ ๋‰ด์Šค ์ผ๋ถ€๊ฐ€ ๋ณด์ž„
    • ๋„ค์ด๋ฒ„ ํŽ˜์ด์ง€์™€ ๋น„๊ตํ•ด๊ฐ€๋ฉฐ
    • slider.js๋ฅผ ๋งŒ๋“ค์ง€ ์•Š์•„์„œ ๊ทธ๋Ÿฐ ๊ฑฐ์˜€์Œ. ํŒŒ์ผ์ด ์—†๊ณ  html๋‚ด์—์„œ๋„ ์ฃผ์„์œผ๋กœ ์ฒ˜๋ฆฌ๋˜์–ด์„œ ๋„ค์ด๋ฒ„ ํŽ˜์ด์ง€์ฒ˜๋Ÿผ ์ž˜ ๋ณด์ด์ง€ ์•Š์€ ๊ฒƒ...
    • ์ด๊ฒƒ ๋•Œ๋ฌธ์— ๋˜ ์‹œ๊ฐ„ ์—„์ฒญ ์ผ๋„คใ…œใ…œ
    • ๊ฒฐ๊ตญ overflow: hidden ์ฃผ์„์ฒ˜๋ฆฌ ๋˜์–ด ์žˆ๋Š” ๊ฒƒ๋„ ๊ทธ๋Œ€๋กœ ๋‘๋Š” ๊ฒŒ ๋งž์•˜๋˜ ๊ฒƒ ๊ฐ™๋‹ค!

  • 4์ฃผ์ฐจ, 5์ฃผ์ฐจ
    • ์ „์ฒด์ ์œผ๋กœ ๊ฐ•์˜๊ฐ€ ๊ทธ๋ƒฅ ๋งŒ๋“ค์–ด์ง„ ์ฝ”๋“œ๋ฅผ ๊ฐ•์‚ฌ๊ฐ€ ์ด๊ฑด ๋ญ๊ณ  ์ด๊ฑด ๋ญ๊ณ  ํ•˜๋ฉด์„œ ๊ฐ„๋‹จํ•˜๊ฒŒ ์–˜๊ธฐํ•˜๊ณ  ์ˆ™์ œ๋กœ ํ•ด ๋ณด๋ผ๊ณ  ํ•˜๋Š” ๊ฑด ์ข€ ๋ณต์žกํ•ด์„œ ์„ค๋ช…์„ ๋ณด๋‹ˆ ์—ญ์‹œ ์ด๊ฒƒ๋„ ๊ทธ๋ƒฅ ๋Œ€์ถฉ ์„ค๋ช…ํ•˜๊ณ  ๋„˜์–ด๊ฐ€๋Š” ๋Š๋‚Œ์ด๋ผ ํฌ๊ฒŒ ๋‚จ๋Š” ๊ฒŒ ์—†๋‹ค.
    • ๊ฐ•์˜์—์„œ ๊ฐ€์ ธ์˜จ ์ฝ”๋“œ๋ฅผ ๋‚ด๊ฐ€ ํ•˜๋‚˜ ํ•˜๋‚˜ ๋œฏ์–ด๋ณด๊ณ  ๋‚ด๊ฐ€ ์ฒ˜์Œ๋ถ€ํ„ฐ ์ฝ”๋“œ๋ฅผ ๋‹ค์‹œ ์งœ๋Š” ๊ฑธ๋กœ ๋ณต์Šต์„ ํ•ด์•ผ ํ•  ๊ฒƒ ๊ฐ™๋‹ค.

3. Youtube ํŽ˜์ด์ง€ ๋งŒ๋“ค๊ธฐ_1

  • ์›น ํผ๋ธ” ๊ฐ•์˜๋ฅผ ๋“ค์—ˆ๋Š”๋ฐ ๋‚จ๋Š” ๊ฒŒ ์—†๋‹ค๋Š” ๊ฒŒ ๋„ˆ๋ฌด ์•„์‰ฝ๊ณ  ๋ญ๋ผ๋„ ์ฝ”๋“œ๋ฅผ ์น˜๊ณ  ์‹ถ์–ด์„œ ํŽ˜์ด์ง€ ๋งŒ๋“œ๋Š” ์œ ํŠญ์„ ๋ณด๊ณ  ์ฝ”๋“œ๋ฅผ ์ณค๋‹ค.
    • https://youtu.be/67stn7Pu7s4
    • Figma ์ด์šฉํ•ด์„œ WireFrame๋ถ€ํ„ฐ ๋งŒ๋“œ๋‹ˆ div๋กœ ์–ด๋–ป๊ฒŒ ๋‚˜๋ˆ ์•ผ ํ• ์ง€ ๊ฐ์ด ์žกํž˜!!

4. Databse ํŠน๊ฐ•

  • DB
    • ๋ฐ์ดํ„ฐ ๋ชจ์Œ + DBMS(DataBase Management System)์„ ์˜๋ฏธ
  • RDBMS(Relational DBMS)
    • ๋ฐ์ดํ„ฐ๊ฐ€ ์—ด๊ณผ ํ–‰์ด ์žˆ๋Š” ํ…Œ์ด๋ธ”๋กœ ์ €์žฅ
    • ์‚ฌ์ „์— ์ •์˜๋œ ๋‚ด์šฉ์— ๋ถ€ํ•ฉํ•˜๋Š” ํ˜•ํƒœ์˜ ๋ฐ์ดํ„ฐ๋งŒ ์‚ฝ์ž…
    • ์ข…๋ฅ˜: MySQL / Oracle / SQLite / MariaDB / PostgresSQL
  • SQL(Structured Query Language)
    • RDBMS์—์„œ ์‚ฌ์šฉ๋˜๋Š” ์–ธ์–ด
    • RDBMS๋ฅผ SQL์ด๋ผ๊ณ ๋„ ํ•จ
    • Scale up(์ˆ˜์ง ํ™•์žฅ) : ์„œ๋ฒ„์˜ ์„ฑ๋Šฅ์„ ๋Š˜๋ฆผ. RDBMS. ํ•˜๋“œ์›จ์–ด ๋ฐœ์ „ ํ•œ๊ณ„
  • NoSQL
    • ์‚ฌ์ „์— ๊ตฌ์กฐ๋ฅผ ์ •์˜ํ•˜์ง€ ์•Š๊ณ  ์œ ์—ฐํ•˜๊ฒŒ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ๊ณ  ์”€
    • ๋‹ค์–‘ํ•œ ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค ์œ ํ˜• ๆœ‰
    • Scale Out(์ˆ˜ํ‰ ํ™•์žฅ) : ์„œ๋ฒ„์˜ ๋Œ€์ˆ˜๋ฅผ ๋Š˜๋ฆผ. NoSQL. ์ •ํ™•์„ฑ์˜ ํ•œ๊ณ„

๐Ÿ€

์นœ๊ตฌ๋“ค ์กฐ์–ธ

  • ๋‚ด๊ฐ€ ์‚ฌ๋ž‘ํ•˜๋Š” ๊ฐœ๋ฐœ์ž ์นœ๊ตฌ๋“ค์ด ์š”์ฆ˜ ๋‚˜ ์ž˜ํ•˜๊ณ  ์žˆ๋Š”์ง€ ๋ฌผ์–ด๋ดค๋‹ค.
    • ์š”์ฆ˜ ๋ณต์Šต๋„ ๋ฐ€๋ ธ๊ณ  ํ•  ๊ฒƒ๋„ ๋งŽ์€๋ฐ ์ƒˆ๋กœ์šด ํ•  ์ผ๋“ค์ด ๊ณ„์† ์ƒ๊ฒจ์„œ ๋„ˆ๋ฌด ๋ฒ…์ฐจ๋‹ค๊ณ  ํ–ˆ๋”๋‹ˆ ์นœ๊ตฌ๋“ค์ด ์ง€๊ธˆ ์ž˜ ํ•˜๊ณ  ์žˆ๋‹ค๋ฉฐ ์šฐ์„ ์ˆœ์œ„๋ฅผ ์•Œ๋ ค์คฌ๋‹ค.

    โญJS + ๋ฐฐ์šด ๊ฒƒ ๋ณต์Šต, ํฌํŠธํด๋ฆฌ์˜ค์— ์ ์šฉ

    • ๋ฏธ๋‹ˆํ”„๋กœ์ ํŠธ ๊ฐœ์ธํŽ˜์ด์ง€๋ฅผ ์ˆ˜์ •ํ•˜๊ณ  ์‹ถ์—ˆ์ง€๋งŒ ๊ณ„์† ๋‹ค๋ฅธ ์ผ์— ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋ฐ€๋ ธ๋‹ค. ๋‚ด ์š•์‹ฌ๋Œ€๋กœ ๋” ์˜ˆ์˜๊ณ  ๋งŽ์€ ๊ธฐ๋Šฅ์„ ๋„ฃ๊ธฐ ๋ณด๋‹ค๋Š” ์ผ๋‹จ ๋‚ด๊ฐ€ ๋ฐฐ์šด ๊ฒƒ์„ ๋ชจ๋‘ ๊ตฌํ˜„ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ๋ชฉํ‘œ๋กœ ์‚ผ๊ณ  ํ•ด๋ณด๊ธฐ!!!
    • ๋ฐฐ์šด ๊ฑธ ํฌํด์— ์ ์šฉํ•˜๋Š” ๊ฒƒ ์ž์ฒด๊ฐ€ ์ฝ”๋“œ๋ฅผ ๊ณ„์† ์น˜๋Š” ๊ณต๋ถ€๊ฐ€ ๋œ๋‹ค.
profile
ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ์ž

1๊ฐœ์˜ ๋Œ“๊ธ€

comment-user-thumbnail
2022๋…„ 11์›” 17์ผ

๊ณต๋ถ€ ์ •๋ฆฌํ•˜์‹œ๊ณ  ๊ณ„์†๋˜๋Š” ์Šค์Šค๋กœ ๊ณต๋ถ€ ๋ฐฉํ–ฅ์„ฑ์„ ์ •ํ•˜์‹œ๋Š” ๊ฒŒ ๋ฌด์—‡๋ณด๋‹ค ์ข‹์€ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค!

๋‹ต๊ธ€ ๋‹ฌ๊ธฐ