eastjun-dev / frontend

MIT License
2 stars 4 forks source link

[mission001] todolist crud #4

Closed eastjun-dev closed 4 years ago

eastjun-dev commented 4 years ago

๐Ÿ”— ๋ฏธ์…˜ ๋งํฌ

1

๐Ÿด ๋ฏธ์…˜ ์ง„ํ–‰ ๋‚ด์—ญ

๐Ÿ’ฌ ์†Œ๊ฐ

์ฒซ๋ฒˆ์งธ ๋ฏธ์…˜์„ ๋ณต์Šต์œ„์ฃผ๋กœ ๊ตฌ์„ฑํ•˜์˜€๊ธฐ ๋•Œ๋ฌธ์— ์ง€๋‚œ ๋ฏธ์…˜ ์ง„ํ–‰ํ•˜๋ฉด์„œ ํ”ผ๋“œ๋ฐฑ ๋ฐ›์•˜๋˜ ๋ถ€๋ถ„๋“ค์„ ์ตœ๋Œ€ํ•œ ์ ์šฉํ•˜๋ ค๊ณ  ํ–ˆ์Šต๋‹ˆ๋‹ค. ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ์— ๋Œ€ํ•œ ๋ถ€๋ถ„์„ ์•„์ง ์ฑ„์šฐ์ง€ ๋ชปํ•œ ๊ฒŒ ์žˆ์–ด์„œ ํ•ด๋‹น ๋ถ€๋ถ„์„ ์—…๋ฐ์ดํŠธ ํ•  ์˜ˆ์ •์ž…๋‹ˆ๋‹ค.

eastjun-dev commented 4 years ago

@YongHoonJJo

๐Ÿ‘จโ€๐Ÿ’ป๋‹ต๋ณ€

๋ชจ๋“ˆํ™”๊ฐ€ ๋„ˆ๋ฌด ๋งŽ์€ ๊ฒŒ ์•„๋‹Œ๊ฐ€ํ•˜๋Š” ์งˆ๋ฌธ์„ ์ฃผ์…จ๋Š”๋ฐ์š”. ์šฐ๋ฆฌ๊ฐ€ ๋งŒ๋“ค๊ฒŒ ๋˜๋Š” ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜๋“ค์€ ๊ณ ์ •๋œ ์ƒํƒœ๋กœ ๊ณ„์† ์ •์ง€ํ•œ๊ฒŒ ์•„๋‹ˆ๊ณ  ์‚ด์•„์›€์ง์ด๋Š”๊ฒŒ ๋งค์šฐ ์ค‘์š”ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์‚ด์•„ ์›€์ง์ธ๋‹ค๋Š”๊ฑด ๋ณ€ํ™”ํ•˜๋Š” ์š”๊ตฌ์‚ฌํ•ญ๊ณผ ํ™˜๊ฒฝ์— ๋”ฐ๋ผ ์œ ์—ฐํ•˜๊ฒŒ ๋ฐ˜์‘ํ•˜๊ณ , ํ™•์žฅํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋Š”๋ฐ์š”. ์ตœ๋Œ€ํ•œ ๊ฐ€์žฅ ์ž‘์€ ๋‹จ์œ„๋กœ ์ปดํฌ๋„ŒํŠธํ™” ํ•  ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„์„ ์ตœ๋Œ€ํ•œ ๋‚˜๋ˆ ์•ผ๋งŒ, ์ปดํฌ๋„ŒํŠธ๋ณ„ ์—ญํ• ์ด ๋ช…ํ™•ํ•ด์ง€๊ณ , ํ˜‘์—…ํ•ด์•ผํ•˜๋Š” ์‚ฌ๋žŒ๊ณผ role์„ ๋ถ„๋ช…ํ•˜๊ฒŒ ์ •ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๊ฐ™์€ ์ปดํฌ๋„ŒํŠธ๋“ค๋กœ๋„ ์—ฌ๋Ÿฌ๊ฐ€์ง€ ์กฐํ•ฉ์œผ๋กœ ์žฌ์‚ฌ์šฉํ•˜๋ฉฐ ๋‹ค์–‘ํ•˜๊ฒŒ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ๋งŽ์•„์ง„๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋Œ€๊ทœ๋ชจ ์„œ๋น„์Šค๋กœ ๊ฐˆ์ˆ˜๋ก ๊ทธ๋Ÿฐ ๊ฒฝํ–ฅ์ด ๋งŽ์•„์งˆํ…๋ฐ์š”. ์ž‘์€ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋งŒ๋“ค๋•Œ๋ถ€ํ„ฐ ๊ทธ๋Ÿฌํ•œ ์—ฐ์Šต์ด ํ•„์š”ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ด์š”~! ๊ทธ๋ž˜์„œ MSA ์•„ํ‚คํ…์ฒ˜์— ๋Œ€ํ•ด ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด ๊ณต๊ฐํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹๊นŒ ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค ํ”„๋ก ํŠธ์—”๋“œ์™€ ๊ด€๋ จํ•ด์„œ ๋งํฌ์™€ ๊ฐ™์€ ๊ธ€์„ ๊ฐ™์ด ๋ด์ฃผ์‹œ๋Š” ๊ฒƒ๋„ ์ข‹์„ ๊ฒƒ ๊ฐ™์•„์š”!

๐Ÿ™‹โ€โ™‚๏ธ์งˆ๋ฌธ

์ €๋„ @YongHoonJJo ๋‹˜๊ป˜ ๋“œ๋ฆฌ๊ณ  ์‹ถ์€ ์งˆ๋ฌธ์€ ์ปดํฌ๋„ŒํŠธ๋ฅผ ์ตœ์†Œํ™”ํ•ด์„œ ์–ป์„ ์ˆ˜ ์žˆ๋Š” ์žฅ์ ์€ ๋ฌด์—‡์ผ๊นŒ์š”~?

YongHoonJJo commented 4 years ago

@EastjunDev

๋‹ต๋ณ€์ฃผ์‹  ๋‚ด์šฉ์— ๋Œ€ํ•ด์„œ๋Š” ๋Œ€๋ถ€๋ถ„ ๊ณต๊ฐํ•ฉ๋‹ˆ๋‹ค..!! ๋‹ค๋งŒ ๋ชจ๋“ˆํ™”๊ฐ€ ๋งŽ๋‹ค๊ณ  ๋Š๊ผˆ๋˜ ์ฝ”๋“œ ์ค‘ ํ•˜๋‚˜๋Š” TodoInput.js ์—์„œ 11 ๋ผ์ธ์ด์—ˆ์Šต๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ๋ถ„๋“ค ์ƒ๊ฐ์€ ์–ด๋–จ์ง€ ๋ชจ๋ฅด๊ฒ ์ง€๋งŒ, ๊ฐœ์ธ์ ์œผ๋กœ๋Š” '๊ตณ์ด..?' ๋ผ๋Š” ์ƒ๊ฐ์ด ๋“ค์–ด์„œ, ํ•˜์ง€๋งŒ, ์ œ๊ฐ€ ๊ฒฝํ—˜์ด ๋ถ€์กฑํ•˜๊ธฐ๋„ ํ•˜๋‹ค๋ณด๋‹ˆ ์กฐ์‹ฌ์Šค๋ ˆ ์˜๊ฒฌ์„ ๋‚จ๊ฒจ๋ณด์•˜์Šต๋‹ˆ๋‹ค!!

์ œ๊ฐ€ ์˜์˜๋ฅผ ์ œ๊ธฐํ•œ ๊ฒƒ์€ ์ปดํฌ๋„ŒํŠธํ™” ๊ด€๋ จ ๋ฌธ์ œ๊ฐ€ ์•„๋‹ˆ์–ด์„œ... ์ปดํฌ๋„ŒํŠธํ™” ๊ด€๋ จ ๋‚ด์šฉ์€ ๋™์ค€๋‹˜ ์˜๊ฒฌ์— ๋™์˜ ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ๊ถ๊ธˆํ•œ ๊ฒƒ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋’ค์—์„œ MSA ์— ๋Œ€ํ•ด์„œ ์˜ˆ์‹œ๋ฅผ ๋“ค์–ด์ฃผ์…จ๋Š”๋ฐ, "๋ถ„๋ฆฌ"์˜ ๊ด€์ ์—์„œ ์˜ˆ์‹œ๋ฅผ ๋“ค์–ด์ฃผ์‹ ๊ฑด๊ฐ€์š”?? MSA ๋Š” ์„œ๋ฒ„์ธก ๊ด€๋ จ ์•„ํ‚คํ…์ฒ˜๋กœ ํ•˜๋‚˜์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ๋ชจ๋“  ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๋Š” ๋Œ€์‹ , ๊ธฐ๋Šฅ๋ณ„๋กœ ์„œ๋ฒ„๋ฅผ ์ž‘๊ฒŒ ๋ถ„๋ฆฌํ•˜์ž๋Š” ๊ฒƒ์ด ๋ชจํ† ๋กœ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. FE ์ชฝ์—์„œ ์–ด๋–ป๊ฒŒ ์—ฐ๊ด€์ง€์–ด ์ƒ๊ฐํ•ด์•ผํ• ์ง€ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค.

๋งˆ์ง€๋ง‰์œผ๋กœ, ์ปดํฌ๋„ŒํŠธ๋ฅผ ์ตœ์†Œํ™”ํ•ด์„œ ์–ป์„ ์ˆ˜ ์žˆ๋Š” ์žฅ์ ์€ ๋ฌด์—‡์ผ๊นŒ์š”~? ๋ผ๊ณ  ์งˆ๋ฌธํ•ด์ฃผ์…จ๋Š”๋ฐ์š”.. ์งˆ๋ฌธ์˜ ์˜๋„๋ฅผ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹คใ…œ ๋‹จ์ˆœ ์งˆ๋ฌธ์ด์‹ ์ง€, ์•„๋‹ˆ๋ฉด ์ œ๊ฐ€ ์ฃผ์žฅํ•˜๋Š” ๋‚ด์šฉ์ด "์ปดํฌ๋„ŒํŠธ๋Š” ์ตœ์†Œํ™”ํ•ด์•ผํ•œ๋‹ค" ๋ผ๊ณ  ์ „์ œํ•˜์‹œ๊ณ  ํ•˜์‹  ์งˆ๋ฌธ์ด์‹ ์ง€์š”ใ…œใ…œ

eastjun-dev commented 4 years ago

@YongHoonJJo ์šฉํ›ˆ๋‹˜์˜ ํ”ผ๋“œ๋ฐฑ์„ ์ œ๊ฐ€ ์ž˜๋ชป ์ดํ•ดํ•ด์„œ ๋ฐœ์ƒํ•œ ๋ฏธ์Šค์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜์ธ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๋‹จ์ˆœํ•œ ๊ธฐ๋Šฅ์ž„์—๋„ ๋„ˆ๋ฌด ๋ชจ๋“ˆํ™”๋ฅผ ๋งŽ์ด ํ•ด๋†“์€๊ฑด ์•„๋‹Œ๊ฐ€ ์‹ถ์€ ๋Š๋‚Œ์„ ๋ฐ›์•˜์Šต๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ๋ถ„๋“ค์˜ ์ƒ๊ฐ์ด ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค.

์šฐ์„  ํ•ด๋‹น ๋ถ€๋ถ„์„ moduleํ™”๋ผ๊ณ  ํ‘œํ˜„ํ•ด์ฃผ์…”์„œ ์ œ๊ฐ€ ์˜คํ•ดํ•˜์˜€์Šต๋‹ˆ๋‹ค. ์ €๋Š” module์„ importํ•˜๊ฑฐ๋‚˜ exportํ•  ๊ฐ์ฒด ๋Œ€์ƒ์œผ๋กœ ์ƒ๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค. javascript module MDN ๋ฌธ์„œ์— ๋ณด์‹œ๋ฉด,

๋„ค์ดํ‹ฐ๋ธŒ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋ชจ๋“ˆ์€ import์™€ export ๋ฌธ(statement)์— ์˜์กด์ ์ด๋‹ค.

๋ผ๊ณ  ํ‘œํ˜„๋˜์–ด์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ ‡๋‹ค๋ณด๋‹ˆ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ์ปดํฌ๋„ŒํŠธํ™”๋ฅผ ๋งŽ์ด ํ•˜๋ ค๊ณ  ํ•œ ์ ์„ ์ด์•ผ๊ธฐํ•˜์‹ ์ค„ ์•Œ์•˜์–ด์š” ใ… ใ… 

ํ•˜์ง€๋งŒ ์œ„์— ๋‹ค์‹œ ์ฝ”๋ฉ˜ํŠธ๋ฅผ ๋‚จ๊ฒจ์ฃผ์‹  ๋ถ€๋ถ„์— ์ •ํ™•ํžˆ line number๋ฅผ ๋‚จ๊ฒจ์ฃผ์‹ ๊ฑธ ๋ณด๊ณ  ์งˆ๋ฌธ์˜ ์˜๋„๋ฅผ ์ดํ•ดํ–ˆ์Šต๋‹ˆ๋‹ค.

    $todoInput.addEventListener('keydown', (event) => this.addTodoItem(event))

    this.addTodoItem = (event) => {
        const $newTodoTarget = event.target
        if (this.isValid(event, $newTodoTarget.value)) {
          this.onAdd($newTodoTarget, $newTodoTarget.value)
        }
      }

      this.onAdd = ($newTodoTarget, newTodoContents) => {
        onAdd(newTodoContents)
        $newTodoTarget.value = ''
      }

์ด ๋ถ€๋ถ„ ๋•Œ๋ฌธ์— ์˜๊ฒฌ์„ ๋‚จ๊ฒจ์ฃผ์…จ๋Š”๋ฐ์š”.

์ด๊ฑด ์ œ๊ฐ€ ๋ฉ”์„œ๋“œ๋ช…์„ ์ ์ ˆํžˆ ์ž‘๋ช…ํ•˜์ง€ ๋ชปํ•ด์„œ ์ƒ๊ธด ์ด์Šˆ์ธ ๊ฒƒ ๊ฐ™์•„์š”. this.onAdd์—์„œ onAdd๋ฅผ ๋˜ ์ถ”๊ฐ€๋กœ ํ•ด์ฃผ๋‹ˆ ์ œ๊ฐ€ ์ƒ๊ฐํ•ด๋„ ๊ตณ์ด...? ๋ผ๋Š” ์ƒ๊ฐ์ด ๋“œ๋Š”๋ฐ์š”. ์ œ๊ฐ€ ์ €๊ฑธ ๊ตฌ๋ถ„ํ•ด์ค€ ์ด์œ ๋Š” ํ•œ ๋ฉ”์„œ๋“œ์—์„œ ์ตœ๋Œ€ํ•œ ํ•œ ๊ธฐ๋Šฅ๋งŒ ํ•˜๋„๋ก ํ•ด์ฃผ๋ ค๊ณ  ํ•ด์„œ์ธ๋ฐ์š”. ์ € ์ฝ”๋“œ์—๋Š” ์ถ”๊ฐ€ํ•˜์ง€ ์•Š์•˜์ง€๋งŒ ๋‚˜์ค‘์— validation์ด๋‚˜, ajax ์ฝ”๋“œ๊ฐ€ ์ถ”๊ฐ€๋  ๊ฑธ ์ƒ๊ฐํ•ด์„œ ๋ถ„๋ฆฌ๋งŒ ํ•ด๋†จ์—ˆ๋Š”๋ฐ ํ˜„์žฌ์˜ ์š”๊ตฌ์‚ฌํ•ญ์—์„œ๋Š” ๋ถ„๋ช… ์˜คํ•ด์˜ ์†Œ์ง€๊ฐ€ ์žˆ๋Š” ๊ฒƒ ๊ฐ™์•„์š”. ๊ทธ๋ž˜์„œ ์•„๋ž˜์˜ ์ฝ”๋“œ์™€ ๊ฐ™์ด ๋ณ€๊ฒฝํ•˜์˜€์Šต๋‹ˆ๋‹ค.

    $todoInput.addEventListener('keydown', (event) => this.addTodoItem(event))

      this.addTodoItem = (event) => {
        const $newTodoTarget = event.target
        if (this.isValid(event, $newTodoTarget.value)) {
          onAdd($newTodoTarget.value)
          $newTodoTarget.value = ''
        }
      }

๊ทธ๋ฆฌ๊ณ  MSA๋ฅผ ๋ง์”€๋“œ๋ฆฐ๊ฑด ๋ถ„๋ฆฌ์˜ ๊ด€์ ์—์„œ ๋ง์”€๋“œ๋ฆฐ๊ฒŒ ๋งž์Šต๋‹ˆ๋‹ค. ์šฉํ›ˆ๋‹˜์˜ ์ฝ”๋“œ๋ฅผ ๋ฆฌ๋ทฐํ•  ๋•Œ app.js ํ•œ ํŒŒ์ผ์— ์ž‘์„ฑํ•˜์…จ๋˜๊ฒŒ ์ƒ๊ฐ๋‚˜์„œ, ์ตœ๊ทผ์— ์ฝ์—ˆ๋˜ ๊ธ€์ธ MSA๊ด€๋ จ ๊ธ€์ด ์ƒ๊ฐ๋‚˜์„œ ์ž‘์„ฑํ–ˆ์—ˆ๋Š”๋ฐ ๋ง์”€ ์ฃผ์‹ ๊ฑธ ๋ณด๋‹ˆ ์ œ๊ฐ€ ๋„ˆ๋ฌด ์˜คํ•ดํ•˜๊ธฐ ์‰ฝ๊ฒŒ ๋น„์•ฝํ•ด์„œ ํ‘œํ˜„ํ•œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ํ•ด๋‹น ๋ถ€๋ถ„์€ ๋„˜์–ด๊ฐ€์ฃผ์…”๋„ ๋  ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๊ผผ๊ผผํžˆ ์‚ดํŽด๋ณด์‹œ๊ณ  ์˜๊ฒฌ ๋‚จ๊ฒจ์ฃผ์‹  ๋ถ€๋ถ„ ๋„ˆ๋ฌด ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค~! ์งˆ๋ฌธ์˜ ์˜๋„๊ฐ€ ์ •ํ™•ํžˆ ํŒŒ์•… ์•ˆ๋œ์ ์€ ๋‹ค์‹œ ์—ฌ์ญค๋ณด๊ณ  ๋‹ต๋ณ€์„ ์ƒ์„ธํžˆ ๋‹ฌ์•˜์–ด์•ผ ํ•˜๋Š”๋ฐ, ๊ทธ๋ ‡์ง€ ๋ชปํ•œ ์ ์ด ์†์ƒํ•˜๋„ค์š” ๐Ÿ˜ญ ๋•๋ถ„์— ํ•œ๊ฐ€์ง€ ๋” ๋ฐฐ์›Œ๊ฐ‘๋‹ˆ๋‹ค! ๋ฐฐ๋ ค์‹ฌ์žˆ๊ฒŒ ๋‹ต๋ณ€ ๋‹ฌ์•„์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ด์š”!

StellaKim1230 commented 4 years ago

@eastjun ๋™์ค€๋‹˜ ๋•๋ถ„์— keyCode deprecated ์™ธ ์—ฌ๋Ÿฌ๊ฐ€์ง€ ๋งŽ์ด ์–ป๊ณ  ๊ฐ‘๋‹ˆ๋‹ค.^^ ์š”๋ฒˆ PR aprrove ์ง„ํ–‰ํ• ๊ฒŒ์š”^^ ๐Ÿ‘