Closed eastjun-dev closed 4 years ago
@YongHoonJJo
๋ชจ๋ํ๊ฐ ๋๋ฌด ๋ง์ ๊ฒ ์๋๊ฐํ๋ ์ง๋ฌธ์ ์ฃผ์ จ๋๋ฐ์. ์ฐ๋ฆฌ๊ฐ ๋ง๋ค๊ฒ ๋๋ ์ดํ๋ฆฌ์ผ์ด์ ๋ค์ ๊ณ ์ ๋ ์ํ๋ก ๊ณ์ ์ ์งํ๊ฒ ์๋๊ณ ์ด์์์ง์ด๋๊ฒ ๋งค์ฐ ์ค์ํ๋ค๊ณ ์๊ฐํฉ๋๋ค. ์ด์ ์์ง์ธ๋ค๋๊ฑด ๋ณํํ๋ ์๊ตฌ์ฌํญ๊ณผ ํ๊ฒฝ์ ๋ฐ๋ผ ์ ์ฐํ๊ฒ ๋ฐ์ํ๊ณ , ํ์ฅํ ์ ์์ด์ผ ํ๋ค๊ณ ์๊ฐํ๋๋ฐ์. ์ต๋ํ ๊ฐ์ฅ ์์ ๋จ์๋ก ์ปดํฌ๋ํธํ ํ ์ ์๋ ๋ถ๋ถ์ ์ต๋ํ ๋๋ ์ผ๋ง, ์ปดํฌ๋ํธ๋ณ ์ญํ ์ด ๋ช ํํด์ง๊ณ , ํ์ ํด์ผํ๋ ์ฌ๋๊ณผ role์ ๋ถ๋ช ํ๊ฒ ์ ํ ์ ์์ผ๋ฉฐ, ๊ฐ์ ์ปดํฌ๋ํธ๋ค๋ก๋ ์ฌ๋ฌ๊ฐ์ง ์กฐํฉ์ผ๋ก ์ฌ์ฌ์ฉํ๋ฉฐ ๋ค์ํ๊ฒ ํ์ฉํ ์ ์๋ ๋ฐฉ๋ฒ์ด ๋ง์์ง๋ค๊ณ ์๊ฐํฉ๋๋ค. ๋๊ท๋ชจ ์๋น์ค๋ก ๊ฐ์๋ก ๊ทธ๋ฐ ๊ฒฝํฅ์ด ๋ง์์งํ ๋ฐ์. ์์ ์ดํ๋ฆฌ์ผ์ด์ ์ ๋ง๋ค๋๋ถํฐ ๊ทธ๋ฌํ ์ฐ์ต์ด ํ์ํ๋ค๊ณ ์๊ฐํด์~! ๊ทธ๋์ MSA ์ํคํ ์ฒ์ ๋ํด ๋ง์ ์ฌ๋๋ค์ด ๊ณต๊ฐํ๋ ๊ฒ์ด ์๋๊น ์๊ฐํฉ๋๋ค ํ๋ก ํธ์๋์ ๊ด๋ จํด์ ๋งํฌ์ ๊ฐ์ ๊ธ์ ๊ฐ์ด ๋ด์ฃผ์๋ ๊ฒ๋ ์ข์ ๊ฒ ๊ฐ์์!
์ ๋ @YongHoonJJo ๋๊ป ๋๋ฆฌ๊ณ ์ถ์ ์ง๋ฌธ์ ์ปดํฌ๋ํธ๋ฅผ ์ต์ํํด์ ์ป์ ์ ์๋ ์ฅ์ ์ ๋ฌด์์ผ๊น์~?
@EastjunDev
๋ต๋ณ์ฃผ์ ๋ด์ฉ์ ๋ํด์๋ ๋๋ถ๋ถ ๊ณต๊ฐํฉ๋๋ค..!! ๋ค๋ง ๋ชจ๋ํ๊ฐ ๋ง๋ค๊ณ ๋๊ผ๋ ์ฝ๋ ์ค ํ๋๋ TodoInput.js
์์ 11 ๋ผ์ธ์ด์์ต๋๋ค. ๋ค๋ฅธ ๋ถ๋ค ์๊ฐ์ ์ด๋จ์ง ๋ชจ๋ฅด๊ฒ ์ง๋ง, ๊ฐ์ธ์ ์ผ๋ก๋ '๊ตณ์ด..?' ๋ผ๋ ์๊ฐ์ด ๋ค์ด์, ํ์ง๋ง, ์ ๊ฐ ๊ฒฝํ์ด ๋ถ์กฑํ๊ธฐ๋ ํ๋ค๋ณด๋ ์กฐ์ฌ์ค๋ ์๊ฒฌ์ ๋จ๊ฒจ๋ณด์์ต๋๋ค!!
์ ๊ฐ ์์๋ฅผ ์ ๊ธฐํ ๊ฒ์ ์ปดํฌ๋ํธํ ๊ด๋ จ ๋ฌธ์ ๊ฐ ์๋์ด์... ์ปดํฌ๋ํธํ ๊ด๋ จ ๋ด์ฉ์ ๋์ค๋ ์๊ฒฌ์ ๋์ ํฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ ๊ถ๊ธํ ๊ฒ์ด ์์ต๋๋ค. ๋ค์์ MSA ์ ๋ํด์ ์์๋ฅผ ๋ค์ด์ฃผ์ จ๋๋ฐ, "๋ถ๋ฆฌ"์ ๊ด์ ์์ ์์๋ฅผ ๋ค์ด์ฃผ์ ๊ฑด๊ฐ์?? MSA ๋ ์๋ฒ์ธก ๊ด๋ จ ์ํคํ ์ฒ๋ก ํ๋์ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ชจ๋ ๊ธฐ๋ฅ์ ๊ตฌํํ๋ ๋์ , ๊ธฐ๋ฅ๋ณ๋ก ์๋ฒ๋ฅผ ์๊ฒ ๋ถ๋ฆฌํ์๋ ๊ฒ์ด ๋ชจํ ๋ก ์๊ณ ์์ต๋๋ค. FE ์ชฝ์์ ์ด๋ป๊ฒ ์ฐ๊ด์ง์ด ์๊ฐํด์ผํ ์ง ๋ชจ๋ฅด๊ฒ ์ต๋๋ค.
๋ง์ง๋ง์ผ๋ก, ์ปดํฌ๋ํธ๋ฅผ ์ต์ํํด์ ์ป์ ์ ์๋ ์ฅ์ ์ ๋ฌด์์ผ๊น์~?
๋ผ๊ณ ์ง๋ฌธํด์ฃผ์
จ๋๋ฐ์.. ์ง๋ฌธ์ ์๋๋ฅผ ๋ชจ๋ฅด๊ฒ ์ต๋๋คใ
๋จ์ ์ง๋ฌธ์ด์ ์ง, ์๋๋ฉด ์ ๊ฐ ์ฃผ์ฅํ๋ ๋ด์ฉ์ด "์ปดํฌ๋ํธ๋ ์ต์ํํด์ผํ๋ค" ๋ผ๊ณ ์ ์ ํ์๊ณ ํ์ ์ง๋ฌธ์ด์ ์ง์ใ
ใ
@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๊ด๋ จ ๊ธ์ด ์๊ฐ๋์ ์์ฑํ์๋๋ฐ ๋ง์ ์ฃผ์ ๊ฑธ ๋ณด๋ ์ ๊ฐ ๋๋ฌด ์คํดํ๊ธฐ ์ฝ๊ฒ ๋น์ฝํด์ ํํํ ๊ฒ ๊ฐ์ต๋๋ค. ํด๋น ๋ถ๋ถ์ ๋์ด๊ฐ์ฃผ์
๋ ๋ ๊ฒ ๊ฐ์ต๋๋ค.
๊ผผ๊ผผํ ์ดํด๋ณด์๊ณ ์๊ฒฌ ๋จ๊ฒจ์ฃผ์ ๋ถ๋ถ ๋๋ฌด ๊ฐ์ฌ๋๋ฆฝ๋๋ค~! ์ง๋ฌธ์ ์๋๊ฐ ์ ํํ ํ์ ์๋์ ์ ๋ค์ ์ฌ์ญค๋ณด๊ณ ๋ต๋ณ์ ์์ธํ ๋ฌ์์ด์ผ ํ๋๋ฐ, ๊ทธ๋ ์ง ๋ชปํ ์ ์ด ์์ํ๋ค์ ๐ญ ๋๋ถ์ ํ๊ฐ์ง ๋ ๋ฐฐ์๊ฐ๋๋ค! ๋ฐฐ๋ ค์ฌ์๊ฒ ๋ต๋ณ ๋ฌ์์ฃผ์ ์ ๊ฐ์ฌํด์!
@eastjun ๋์ค๋ ๋๋ถ์ keyCode deprecated ์ธ ์ฌ๋ฌ๊ฐ์ง ๋ง์ด ์ป๊ณ ๊ฐ๋๋ค.^^ ์๋ฒ PR aprrove ์งํํ ๊ฒ์^^ ๐
๐ ๋ฏธ์ ๋งํฌ
1
๐ด ๋ฏธ์ ์งํ ๋ด์ญ
๐ฌ ์๊ฐ
์ฒซ๋ฒ์งธ ๋ฏธ์ ์ ๋ณต์ต์์ฃผ๋ก ๊ตฌ์ฑํ์๊ธฐ ๋๋ฌธ์ ์ง๋ ๋ฏธ์ ์งํํ๋ฉด์ ํผ๋๋ฐฑ ๋ฐ์๋ ๋ถ๋ถ๋ค์ ์ต๋ํ ์ ์ฉํ๋ ค๊ณ ํ์ต๋๋ค. ์ ํจ์ฑ ๊ฒ์ฌ์ ๋ํ ๋ถ๋ถ์ ์์ง ์ฑ์ฐ์ง ๋ชปํ ๊ฒ ์์ด์ ํด๋น ๋ถ๋ถ์ ์ ๋ฐ์ดํธ ํ ์์ ์ ๋๋ค.