TIL_221122 โœ”๏ธ๐Ÿ€ Basic_Project

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

TIL

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

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


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

1.ํ”„๋กœ์ ํŠธ

  • SPA ๊ตฌํ˜„
    • hash๊ฐ’์€ ์ฃผ์–ด์ง€๋Š”๋ฐ ํŽ˜์ด์ง€ ์ด๋™์ด ์•ˆ ๋จ
    • main.js์—์„œ ์•ˆ ์“ฐ๋Š” api import ์ฃผ์„ ์ฒ˜๋ฆฌํ•˜๊ณ  router์—์„œ ์ฃผ์„์ฒ˜๋ฆฌ ํ•œ ๋ถ€๋ถ„์— ์žˆ๋˜ ์ฝ”๋“œ ๋ช‡ ์ค„๋งŒ ์œ„๋กœ ์˜ฎ๊ฒจ ๋ถ™์—ฌ์„œ ํ•˜๋‹ˆ ๋ฉ”์ธํŽ˜์ด์ง€์—์„œ ๋กœ๊ทธ์ธ ๋ฒ„ํŠผ ๋ˆŒ๋ €์„ ๋•Œ ๋กœ๊ทธ์ธ ํŽ˜์ด์ง€๋กœ ์ž˜ ๋„˜์–ด๊ฐ
    • ์ƒˆ๋กœ๊ณ ์นจ ํ•˜๋ฉด ๋ฉ”์ธ์œผ๋กœ ์™€์•ผํ•˜๋Š”๋ฐ ๊ทธ๊ฑด ์•ˆ ๋จ..
      -> ์•„๋งˆ ๋กœ๊ทธ์ธ ์ฐฝ์—์„œ ๋‹ซ๊ธฐ ๋ฒ„ํŠผ์— #๊ฐ’์„ ์ค˜์„œ ๋ฉ”์ธ์œผ๋กœ ๊ฐ€๊ฒŒ ํ•˜๊ฑฐ๋‚˜ ์™ผ์ชฝ ์œ„์— ๋กœ๊ณ  ๋ฒ„ํŠผ ๋ˆ„๋ฅด๋ฉด ๋ฉ”์ธ์œผ๋กœ ๊ฐ€๊ฒŒ ๋งŒ๋“ค์–ด์•ผ ํ•  ๊ฒƒ ๊ฐ™์Œ

โœ”๏ธ

  • document.getElementById("root").innerHTML = html;
    -> ์—ฌ๊ธฐ์„œ "root"๋Š” main page(index.html)์˜ body ์•ˆ์˜ ์ „์ฒด ๋‚ด์šฉ์„ ๊ฐ์‹ธ๋Š” div์˜ id๊ฐ’
    -> ๋ฉ”์ธ ํŽ˜์ด์ง€์—์„œ ํฌ์ŠคํŠธ ๊ธ€๋งŒ ๋ถˆ๋Ÿฌ์˜ค๊ณ  ์‹ถ์œผ๋ฉด ๊ทธ ๋ถ€๋ถ„์— id๊ฐ’์„ ์ฃผ๊ณ  document~ ํ•ด์„œ ํ•ด๋‹น ๋ถ€๋ถ„์— ๋ถ™์—ฌ์˜ค๋ฉด ๋จ
  • ๋ฉ”์ธ์—์„œ ํฌ์ŠคํŠธ๋ฅผ ๋ถˆ๋Ÿฌ์˜ฌ ๋•Œ ์šฐ๋ฆฌ๋Š” index.html์ด ๊ธฐ๋ณธ์ด๋‹ˆ๊นŒ index.js๋ฅผ ๋งŒ๋“ค์–ด์„œ ํฌ์ŠคํŠธ๊ฐ€ ๋ถ™๋Š” ํ˜•์‹์„ ์ •ํ•ด์•ผ ํ•˜๋Š” ๊ฑฐ ์•„๋‹Œ๊ฐ€?
    • ์ด๊ฑด ๋˜ post๊ธฐ๋Šฅ์ด ํ™œ์„ฑํ™”๋˜๊ณ  ๊ธ€ ์˜ฌ๋ฆฐ ๋‹ค์Œ์— ๋‚ด์šฉ์ด ๋ณด์—ฌ์•ผ ํ•˜๋Š” ๊ฑฐ๋ผ post.js๋„ ๋จผ์ € ์™„์„ฑ์ด ๋˜์–ด์•ผ ํ•จ..!
  • ์ฐจ๋ก€๋กœ ๊ธฐ๋Šฅ์ด ์ž˜ ๊ตฌํ˜„๋˜๋Š”์ง€ ๋ณด๊ธฐ
    • ๋กœ๊ทธ์ธ์ด ๋˜๋Š”์ง€ ๋ณด๊ธฐ ์œ„ํ•ด์„œ auth.js ๋งŒ๋“ค๊ณ  auth.html๋„ ์กฐ๊ธˆ์”ฉ ์† ๋ดค์Œ

โœ”๏ธ

  • main.js์—์„œ ํ•ด๋‹น api์ฃผ์„๋งŒ ์กฐ๊ธˆ์”ฉ ํ•ด์ œํ•˜๋Š”๋ฐ ๋‹ค์‹œ ๋ฉ”์ธํŽ˜์ด์ง€์—์„œ ๋กœ๊ทธ์ธ ํŽ˜์ด์ง€๋กœ ์•ˆ ๋„˜์–ด๊ฐ€๋Š” ์˜ค๋ฅ˜
    • ๊ฐ•์˜์—์„œ ํ•ด๋‹น์ฝ”๋“œ๋ฅผ ๊ฐ€์ ธ์™€์„œ ํ•„์š”ํ•œ ๋ถ€๋ถ„๋งŒ ์ฃผ์„ํ•ด์ œํ•˜๋Š” ์‹์œผ๋กœ ํ–ˆ๋Š”๋ฐ ๋‹ค ์ง€์šฐ๊ณ  ์ฐจ๊ทผ์ฐจ๊ทผ ๊ตฌํ˜„ํ•œ ํŽ˜์ด์ง€๋ถ€ํ„ฐ
      import๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ์‹์œผ๋กœ ํ•ด์•ผ๊ฒ ๋‹ค.
    • ์ƒˆ๋กœ์šด ์ฐฝ์—์„œ ํ•ด๋‹น ๋ถ€๋ถ„ page, css, js๋งŒ ๊ฐ€์ ธ์˜ค๊ณ  main.js, router.js๋Š” ๋‹ค ๋น„์šด ๋‹ค์Œ์— ์ฝ”๋“œ ์ฒซ์ค„ ๋ถ€ํ„ฐ ๋‹ค์‹œ ์ž‘์„ฑํ–ˆ๋‹ค.
  • import
    • import์ฝ”๋“œ๋ฅผ ๋„ฃ์—ˆ์„ ๋•Œ ํ๋ ค์ง€๋Š” ๊ฑด ํ•ด๋‹น ํŒŒ์ผ์— importํ•œ api๊ฐ€ ์‚ฌ์šฉ๋˜์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ!!
    • โญjs ๋˜‘๋˜‘ํ•œ ๊ฒƒ ๊ฐ™๋‹ค. import๊ฐ€ ์•„๋‹ˆ๋”๋ผ๋„ ๋‚ด๊ฐ€ ์‚ฌ์šฉํ•˜์ง€ ์•Š์€ const๋‚˜ window๊ฐ์ฒด๊ฐ€ ์žˆ์œผ๋ฉด ์ƒ‰์„ ํ๋ฆฌ๊ฒŒ ํ•˜๊ฑฐ๋‚˜ ๋‹ค๋ฅธ ์ƒ‰์œผ๋กœ ๊ตฌ๋ถ„ํ•ด์„œ ๋ณด์—ฌ์ค€๋‹ค!

  • auth.js ์„ฑ๊ณต!!! ๋กœ๊ทธ์ธ, ํšŒ์›๊ฐ€์ž… ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ๋ถ€ํ„ฐ ๋กœ๊ทธ์ธํ•˜๋ฉด loginmainํŽ˜์ด์ง€๋กœ ์ด๋™.
  • ๋กœ๊ทธ์ธ, ๋กœ๊ทธ์•„์›ƒ ์•ˆ ํ–ˆ๋Š”๋ฐ ๋ฉ”์ธ ํŽ˜์ด์ง€ ๋“ค์–ด๊ฐ€๋ฉด "๋กœ๊ทธ์ธ / ๋กœ๊ทธ์•„์›ƒ ์„ฑ๊ณต" ๋ฉ”์‹œ์ง€ ๋œจ๋Š” ๊ฑฐ ์ˆ˜์ •
    • ๋กœ๊ทธ์ธ ํ•˜๋ฉด hash๊ฐ’์— ๋”ฐ๋ผ loginmain, ๋กœ๊ทธ์•„์›ƒํ•˜๋ฉด main(index.html)์œผ๋กœ ๊ฐ€๊ฒŒ ๋ณ€๊ฒฝ

    โญ ํŠœํ„ฐ๋‹˜ ์ฝ”๋“œ ์ฐธ๊ณ  ํ•  ๋•Œ๋Š” ํ•ญ์ƒ ๋น ๋œจ๋ฆฌ๋Š” ๋ถ€๋ถ„ ์—†๋Š”์ง€ ์ž˜ ๋ณด๊ธฐ.

    • ์ž๊พธ ์ฝ”๋“œ 1-2์ค„ ์ฝ”๋“œ ๋นผ๋จน์–ด์„œ ์˜ค๋ฅ˜ ์ƒ๊น€
  • ํŒ€์›๋“ค ํšŒ์›๊ฐ€์ž…, ๋กœ๊ทธ์ธ ๋‹ค ์„ฑ๊ณต!
  • ํŒ€์›๋“ค์—๊ฒŒ ์ฝ”๋“œ ์„ค๋ช…๊นŒ์ง€ ์™„๋ฃŒ!
  • auth.js์— '๋กœ๊ทธ์ธ, ํšŒ์›๊ฐ€์ž… ํ™”๋ฉด ํ† ๊ธ€๋ง ๊ธฐ๋Šฅ'๋ถ€๋ถ„์ด ์ข€ ํ—ท๊ฐˆ๋ ธ๋Š”๋ฐ
    if (loginBtn.value === "๋กœ๊ทธ์ธ") ์ด ๋ถ€๋ถ„์€ ์•„๋ž˜ 'ํšŒ์›๊ฐ€์ž…, ๋กœ๊ทธ์ธ' ๋ถ€๋ถ„์„ ๋ฐ”๊พธ๋ ค๋ฉด html์—์„œ ์ •ํ•œ value๊ฐ’์ด ์ผ์น˜ํ•ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ. = ์ „์ œ์กฐ๊ฑด!

  • ์‚ฐ ๋„˜์–ด ์‚ฐ!
    • ์†Œ์…œ๋กœ๊ทธ์ธ์ด ์•ˆ ๋จ!
    • ๋ฉ”์ธ ํŽ˜์ด์ง€์— ๊ฒŒ์‹œ๋ฌผ์„ ๋ถˆ๋Ÿฌ์™€์•ผ ํ•จ
    • ์ผ๋‹จ ํฌ์ŠคํŠธ๊ฐ€ ๋จผ์ €..
  • router.js์—์„œ ์œ ์ €์˜ ๋‹‰๋„ค์ž„, ํ”„๋กœํ•„์ด loginmainํŽ˜์ด์ง€์— ๋œจ๊ฒŒ ํ•จ.
    • profile ํŒŒ์ผ ๋“ฑ์—์„œ ์—ฐ๊ฒฐ์€ ์ œ๋Œ€๋กœ ์•ˆ ๋๊ฒ ์ง€๋งŒ ํ•ด๋‹น ๋ฐ์ดํ„ฐ๊ฐ€ ์—†์œผ๋ฉด 'ํšŒ์›' / '๊ฐ•์•„์ง€ ์‚ฌ์ง„' ์ด ๋œจ๊ฒŒ ํ•จ

โœ”๏ธ

  • loginmain ํŽ˜์ด์ง€์—์„œ ํ”„๋กœํ•„ ์ด๋ฏธ์ง€ ํ†ตํ•ด post ํŽ˜์ด์ง€๋กœ ๊ฐ€๊ณ  ์‹ถ์€๋ฐ ๋ˆ„๋ฅด๋ฉด 404 error๊ฐ€ ๋œธ(hash=undefined)
    • index.html์ด ์•„๋‹ˆ๋ผ ํŽ˜์ด์ง€ ๋‚ด์—์„œ ์ด๋™ํ•˜๋Š” ๊ฑฐ๋ผ ์ข€ ๋‹ค๋ฅธ ๊ฒƒ ๊ฐ™์Œ
    • try #1
      -> router์—์„œ ํŠน์ • ํŽ˜์ด์ง€ DOM ์„ค์ •์„ ํ•ด์•ผ ํ•˜๋Š” ๊ฒƒ ๊ฐ™๋‹ค.
      -> post ํŽ˜์ด์ง€ ๋„ฃ์–ด๋ดค๋Š”๋ฐ ์•ˆ ๋จ
    • try #2
      -> ํŠน์ • ํŽ˜์ด์ง€ DOM ์„ค์ •๋„ handleLocation ํ•จ์ˆ˜ ์•ˆ์— ์žˆ๊ณ  ๊ทธ ์•ˆ์—
      document.getElementById("root").innerHTML = html;
      ์ด๋ฒคํŠธ๊ฐ€ ์žˆ๋Š”๋ฐ post, mypage html์— id="root" ๊ฐ€ ์—†์–ด์„œ ๊ฐ ํŽ˜์ด์ง€ body๋ถ€๋ถ„์— div root ์ถ”๊ฐ€
      -> ์‹คํŒจ / ํŠน์ • ๋” ์œ—๋ถ€๋ถ„(if path.length==) ์•„๋ž˜ ๋ถ™์—ฌ๋„ ์‹คํŒจ
    • try #3
      -> authํŽ˜์ด์ง€์—์„œ loginmain ํŽ˜์ด์ง€๋กœ ๊ฐ„ ๊ฑธ ์ƒ๊ฐํ•ด๋ณด๋ฉด auth.js๋‚ด์— window.location.hash = "#loginmain" ํ•จ์ˆ˜๊ฐ€ ์žˆ์—ˆ์Œ(handleLocation์€ ์—†์—ˆ์Œ)
      -> ์ง€๊ธˆ loginmain ํŽ˜์ด์ง€์—์„œ post๋กœ ๊ฐ€๋ ค๋Š” ๊ฑฐ๋‹ˆ๊นŒ loginmain.js์— ์ € ํ•จ์ˆ˜๊ฐ€ ์žˆ์œผ๋ฉด ๋  ๊ฒƒ ๊ฐ™์Œ
      -> ํ•˜๋‹ค๊ฐ€ ๋ฐฉํ–ฅ์„ ๋ฐ”๊ฟˆ
      -> router.js์— export const goToProfile์„ ์ฐธ๊ณ ํ•ด์„œ goToPost ๋งŒ๋“ค๊ณ  loginmian.html์— goToPost๋ฒ„ํŠผ ๋„ฃ์Œ
      -> ์„ฑ๊ณต!! ์ž์„ธํ•œ ๋‚ด์šฉ์€ commit์—..
      -> ํŒ€์›๋“ค์ด๋ž‘ ์ฝ”๋“œ ๋ฆฌ๋ทฐ๊นŒ์ง€ ์™„๋ฃŒ!

โœ”๏ธ

  • loginํŽ˜์ด์ง€์—์„œ ์†Œ์…œ๋กœ๊ทธ์ธ ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด ํŒ์—…์ด ๋œจ๋‹ค ๋ฉˆ์ถค
    - ํŒ€์›์ด firebase์˜ key๊ฐ’์„ ํŠœํ„ฐ๋‹˜๊ฒƒ์œผ๋กœ ํ–ˆ๋”๋‹ˆ ๋œ๋‹คํ•ด์„œ ๋‚ด firebase key ์‚ดํŽด๋ด„
    - measurementId๊ฐ€ ๋‚˜ํ•œํ…Œ๋งŒ ์žˆ์–ด์„œ ์ฃผ์„์œผ๋กœ ์ฒ˜๋ฆฌํ•ด ๋ดค๋Š”๋ฐ ์—ฌ์ „ํžˆ ์•ˆ ๋จ
    - firebase์—์„œ ๊ตฌ๊ธ€, ๊นƒํ—™ ๋กœ๊ทธ์ธ ์‚ฌ์šฉ ์ค‘์ง€ํ–ˆ๋‹ค๊ฐ€ ๋‹ค์‹œ ์„ค์ •ํ•˜๊ณ  ๊นƒํ—™์€ id,pw ์ƒˆ๋กœ ๋ฐ›์•„์™€์„œ ํ–ˆ๋Š”๋ฐ๋„ ์•ˆ ๋จ
    - firebase ํ”„๋กœ์ ํŠธ ๋‹ค์‹œ ๋งŒ๋“ค์–ด์„œ ์—ฐ๊ฒฐํ•ด๋ด„
    -> ์ƒˆ๋กœ ๋งŒ๋“œ๋‹ˆ key์— measurementId ์—†์Œ
    -> ๋‹ค๋ฅธ ํŒ€์›์ด ํ•ด๊ฒฐ ํ•ด์ฃผ์‹ฌ!!
    -> firebase - Authentication -
    Settings - ์Šน์ธ๋œ ๋„๋ฉ”์ธ์— ๋กœ์ปฌ ์ฃผ์†Œ๋ฅผ ๋„๋ฉ”์ธ ์ถ”๊ฐ€ํ•ด์•ผ ํ•จ!!!!!!!!!!!!!!!!!!!!!!!!!!!!

post.js ๊ตฌํ˜„

  • post์ฐฝ์„ ๋ณด๋‹ˆ ์นดํ…Œ๊ณ ๋ฆฌ๋„ ๋‚˜๋‰˜์–ด ์žˆ๊ณ  ํƒœ๊ทธ ์ž…๋ ฅ์ฐฝ์ด ์žˆ๋Š”๋ฐ ํƒœ๊ทธ ์ž…๋ ฅ์ฐฝ์— ์—”ํ„ฐ์น˜๋ฉด #๊ฐ€ ์ž๋™์œผ๋กœ ๋ถ™๋Š” ๊ธฐ๋Šฅ..(like velog) ๊ตฌํ˜„ ๊ฐ€๋„ํ• ๊นŒ..?
  • post.js save_post ์ด๋ฒคํŠธ ๋งŒ๋“ค๊ณ  ์กฐ๊ธˆ ํ•˜๋‹ค๋ณด๋‹ˆ ๊ฐ์ด ์žกํ˜€์„œ ์˜ค๋Š˜์€ 11์‹œ ๋˜๊ธฐ 7๋ถ„ ์ „์— ํ‡ด๊ทผ!!

๐Ÿ€ ๋งค๋‹ˆ์ €๋‹˜ ์กฐ์–ธ

  • commit ์ž์ฃผํ•˜๊ณ  ํŠธ๋Ÿฌ๋ธ”์ŠˆํŒ… ์ž์„ธํžˆ ๊ธฐ๋กํ•ด์„œ ํฌํด์— ์“ฐ๊ธฐ
    -> ์ฝ”๋“œ๋ฅผ ์–ด๋–ป๊ฒŒ ๊ณ ์ณค๋Š”์ง€ ์บก์ณ
    -> commit message: error fixed
  • ์ข‹์€ commit message ์ฐพ์•„๋ณด๊ณ  ์ค„๋ฐ”๊ฟˆ ํ•˜๋ฉด์„œ ์ข€ ๋” ์ž์„ธํ•œ commit message๋กœ ๋ฐ”๊ฟˆ!
profile
ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ์ž

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