https://vanilla-todolist-js.vercel.app/
์๋
ํ์ธ์. CEOS 15๊ธฐ ํ๋ก ํธ ์ต์ด์ง์
๋๋ค.
ํ๋ก ํธ ์คํฐ๋ ์ฒซ ๊ณผ์ ๋
<Vanilla-Todo - ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋์ ์์ด HTML, CSS, Javascript๋ก๋ง To-Do ๋ฆฌ์คํธ ๋ง๋ค์ด ๋ณด๊ธฐ> ์์ต๋๋ค.
๋ฆฌ์กํธ ๊ฐ์ JS ๊ธฐ๋ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ ๋๋ง๋ค ๋ชจ๋ฅด๋ ๋ถ๋ถ์ ๋ฎ์ด๋๊ณ
ํธ๋ฆฌํจ์๋ง ์์กดํ๋ ๊ฒ ๊ฐ์ ์ฐ์ฐํ์๋๋ฐ ๋ง์นจ ์ข์ ๊ธฐํ๋ผ๊ณ ์๊ฐํ์ต๋๋ค.
์ฒ์์๋ dribbble์ ์คํฌ๋ฉ ํด ๋จ๋ To-Do ๋ฆฌ์คํธ ๋์์ธ ์ค ํ๋๋ฅผ ๊ณจ๋ผ ๋ ์ด์์์ ๊ตฌ์ฑํด ๋ณผ๊น ์ถ์๋๋ฐ, ํ์์ ๊ฐ์ฅ ๋ง์ด ์ฐ๋ To-Do ๋ฆฌ์คํธ๊ฐ ๋ญ๊น ์๊ฐํ๋ค๊ฐ IOS์ ๋ฉ๋ชจ ์ฑ์ ๋ชจํฐ๋ธ๋ก ํด์ UI๋ฅผ ๊ตฌ์ฑํ์ต๋๋ค.
์ด๋ฌํ ์์๋ก ๊ฐ๋ฐ ์์๋ฅผ ๊ตฌ์ฑํ์ต๋๋ค.
- ์ ์ฒด ํ๋ฉด์์ To-Do ๋ฆฌ์คํธ์ ์ด๋ฅผ ์ ์ธํ ๋ถ๋ถ์ ๋ ์ด์์ ๋๋๊ธฐ
- ํ๋ฉด์ ๊ตฌ์ฑํ๋ ์์๋ค์ Style Sheet๋ก ๊พธ๋ฏธ๊ธฐ
- ์ฑ๊ธ To-Do ๋ฆฌ์คํธ ์ถ๊ฐ ๋ฐ ์ญ์ ๊ธฐ๋ฅ ๊ตฌํํ๊ธฐ
- ๋ฆฌ์คํธ์ ์ํ ์ผ์ ๊ฐ์ ์ธ๊ธฐ
- ๋ฆฌ์คํธ ๊ฐ ์์ ํด๋ฆญ ์ ์ํธ ์์ฉ์ผ๋ก ๋์ด๊ฐ ์ ์๋๋ก ๊ตฌํํ๊ธฐ
- localStorage๋ฅผ ์ด์ฉํ ์ ์ฅ ๋ฐ ๋ถ๋ฌ์ค๊ธฐ ๊ตฌํํ๊ธฐ
(1) Style Sheet๋ฅผ ํตํด ๊ท์น์ ์์ฑํ ๋์ ์ฃผ์ํ ์
์ด๋ค ํจ๊ณผ๋ฅผ ์ฃผ๊ณ ์ถ์ด์ ๊ทธ์ ๊ด๋ จ๋ CSS ๊ท์น๋ค์ ์ฐพ์๋ณด๊ณ ๋๋ ์ ๋ ๊ฐ์ง๋,
์ ์ฉ ๊ฐ๋ฅํ ์ ๋ง ๋ฌด์ํ ์คํ์ผ ์์ฑ๋ค์ด ์กด์ฌํ๋ค๋ ์ ๊ณผ ์คํ๋ ค ๋๋ฌด ๋ง์์
์ด๋ค ์์ฑ๋ค์ ์ค์ผ ํ ์ง ๊ณ ๋ฏผ๋๋ค๋ ์ ์ด์์ต๋๋ค.
๊ฐ๋จํ๊ฒ ๋ ๊ฐ์ ์ํ๋ก ๋์ด๋์ด ์๋ ์์๋ฅผ ์ด์ง ๋์ฐ๊ณ ์ถ์ ๋
์ด๋ค ์ชฝ์์ ์์ฑ์ ์ค์ผ ํ๋์ง, ์ด ์ํฉ์์๋ margin
ํน์ padding
๋ ์ค ์ด๋ ์์ฑ์ ์ฃผ๋ ๊ฒ ์ ๋ต์ ๊ฐ๊น์ด์ง, ํน์
๋ถํ์ํ ์์ฑ๋ค์ ๊ฒน์ณ์ ์ฌ์ฉํ๊ณ ๋์ด๊ฐ์ง ์์๋ ์ด๋ฌํ ๊ณ ๋ฏผ๋ค์ ํ๋ค๊ฐ
์ผ๋จ์ ์ฒซ ๊ณผ์ ๋๊น ๋ฌด์์ ์จ ๋ณด๊ณ ํ๋ฆฐ ๋ถ๋ถ์ ๋ค๋ฅธ ๋ถ๋ค๊ป์ ์ง์ ํด ์ฃผ์๋
์ฝ๋ ๋ฆฌ๋ทฐ๋ฅผ ๋ณด๊ณ ๋ฐฐ์์ ์ ์ฉํด์ผ๊ฒ ๋ค๊ณ ์๊ฐํ๊ณ ์งํํ์ต๋๋ค!
(2) Git Commit Message์ ๋ํ Convention Rule
์ฌ์ค Github์ ์ ์ฅ์๋ฅผ ๋ง๋ค๊ณ ํ์์ ์ํด ์ฒซ ์ปค๋ฐ์ ๋จ๊ธด ๊ฒ
์ฝ 6๊ฐ์ ์ ์ด์๋๋ฐ, ๊ทธ ๋ Commit Message์ ๋ํ
์ผ๊ด์ ์ธ ๊ท์น์ ์๊ณ ์ถ์ด์ ๊ฒ์ํด ๋ณด๋ค๊ฐ
๋ช
๋ นํ์ผ๋ก ๊ตฌ์ฑํ ๊ฒ
์ ๋๋ง ์๊ณ ๋์ด๊ฐ์์ต๋๋ค.
๊ทธ๋ฐ ์์ค์ 1์ฐจ ์คํฐ๋ ๊ณผ์ ์งํํ๋ฉด์ ๋ฉํ ๋๋ค๊ป
Commit Message ๊ธฐ๋ก์ ๋ํ ์ฐ์ ์ ์ฉ ์ฌ๋ก๋
Gitmoge
๊ฐ์ ์ ์ฉํ ํด๋ค์ ์๊ฒ ๋์ด ๋งค์ฐ ๋ฟ๋ฏํ์ต๋๋ค!
์์ผ๋ก ๋ค๋ฅธ ์ ์ฅ์๋ฅผ ๊ด๋ฆฌํ๋ฉด์๋ ๋จ์ํ ๊น๋ํด ๋ณด์ด๊ธฐ ์ํจ์ ๋์ด
์ ์ฅ์๋ฅผ ๊ณต์ ํ๋ ๋ค๋ฅธ ๊ฐ๋ฐ์๋ค๊ณผ์ ์์ฌ์ํต์ ์ํ
Commit ๊ธฐ๋ก์ ๋จ๊ธฐ๋ ๋ฐฉ๋ฒ์ ๋ํด ์ค๋ง๋ฆฌ๋ฅผ
๋ง์ด ์ป๊ฒ ๋ ๊ฒ ๊ฐ์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค ๐
DOM์ ๋ฌด์์ธ๊ฐ์?
DOM์ ํ์ด ์ฐ๋ฉด Document Object Model์
๋๋ค.
๊ทธ ์ ๊น์ง๋ ๋จ์ํ HTML์ ํ๊ทธ ๋ฐ ๋ด์ฉ ๊ตฌ์ฑ์ Javascript ๋ฑ์์
์ ๊ทผํด ๋ณ๊ฒฝํ๋ ๋ฐฉ๋ฒ, ํน์ ๊ทธ ๊ณผ์ ์์์ ์ด๋ ํ ๊ตฌ์กฐ๋ฅผ ๋งํ๋
์ฉ์ด๋ก๋ง ๋ชจํธํ๊ฒ ์๊ฐํ์๋๋ฐ ์กฐ๊ธ์ด๋๋ง ๋ ์ ํํ ํํ์
HTML ๋ฌธ์์ ๋ํ ์ธํฐํ์ด์ค๋ผ๊ณ ๋ํ๋ผ ์ ์์ง ์์๊น ์ถ์ต๋๋ค.
HTML (tag) Element๋ฅผ JavaScript๋ก ์์ฑํ๋ ๋ฐฉ๋ฒ์ ์ด๋ค ๊ฒ์ด ์๊ณ , ์ด๋ค ๋ฐฉ๋ฒ์ด ๊ฐ์ฅ ์ ํฉํ ๊น์?
- createElement
createElement
ํจ์๋ฅผ ํตํด ์๋ก์ด Element ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ ๊ฒฝ์ฐ๋
๊ฐ์ฅ ๊ฐ๋จํ๊ณ ์ฝ๊ฒ ๊ฐ๋ค ์ธ ์ ์๊ฒ ์๊ฒผ์ง๋ง
๋ด๋ถ์ ์ผ๋ก DOM ํธ๋ฆฌ๋ฅผ ํ์ํ๋ ๋ฐ ์ฑ๋ฅ ์ ํ๊ฐ ๋ฐ์ํ๋ค๊ณ ํฉ๋๋ค.
- insertAdjacentHTML
์์ createElement๊ฐ ํ๊ทธ์ ๊ฐ์ ๋
ธ๋ ํํ๋ก ์ ๋ฌํด ํธ์ถํ๋ค๋ฉด,
ํ
ํ๋ฆฟ ๋ฆฌํฐ๋ด์ ์ด์ฉํด ์ง์ ํ๊ทธ ํํ ๊ทธ ์์ฒด๋ก ์ฝ์
ํ๋ ํจ์์ธ ๊ฒ ๊ฐ์ต๋๋ค.
๋ฐ๋ณต๋๋ ํ๊ทธ๋ค์ ์์ฑํ ๋์ ๊ฐ๋
์ฑ์ด ์ข์ง๋ง,
XSS ๊ณต๊ฒฉ์ ๋ํ ๋ณด์ ์ด์๊ฐ ์๋ ๋ฏ ํฉ๋๋ค.....
- Document Fragment
HTML ์ชฝ์์ ๋ฏธ๋ฆฌ template
ํ๊ทธ๋ฅผ ๋ง๋ค์ด ๋๊ณ
์ด๋ฅผ JS์์ ๋ณต์ฌํ๋ ๋ฐฉ์์ธ ๊ฒ ๊ฐ์ต๋๋ค.
๋งค์ฐ ๋ง์ ๋
ธ๋๋ค์ ์์ฑํด์ผ ํ๋ ๊ฒฝ์ฐ ๊ฐ์ฅ ๋์ ์ฑ๋ฅ์ ๊ฐ์ง๋ ๋ฐฉ๋ฒ์ด๋ฉฐ
์ฌ์ค ์์ฑ๋ณด๋ค ๋ณต์ฌ์ ๊ฐ๊น๋ค๋ ์ ์์ ์ฌ์ฉ ๋ชฉ์ ์ด ๋๋ ทํ๊ฒ ๋ถ๋ฅ๋ ๋ฏ ํฉ๋๋ค.
Semantic tag์๋ ์ด๋ค ๊ฒ์ด ์์ผ๋ฉฐ, ์ด๋ฅผ ์ฌ์ฉํ๋ ์ด์ ๋ ๋ฌด์์ผ๊น์?
Semantic Tag๋ HTML5 ํ์ค ์ดํ๋ก ์ง์๋๋ ํ๊ทธ๋ค๋ก์จ
ํ๊ทธ ๊ทธ ์์ฒด๊ฐ ๋ช
ํํ๊ฒ ๊ธฐ๋ฅ์ ๋ํ๋ธ๋ค๋ ์ ์ด ํน์ง์
๋๋ค.
์ด๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ, ์ฝ๋ ์ ์ฒด์ ๊ฐ๋
์ฑ์ด ๋์์ง๋ค๋ ์ ์ด ์ฃผ์ํ ์ฅ์ ์ด๋ผ๊ณ ํ๋๋ฐ
๋น์ฅ ์ด๋ฒ ๊ณผ์ ๋ฅผ ์ํํ๋ฉด์๋ ํด๋์ค ์์ฑ ๋ค์ด๋ฐ ๊ท์น์ ๋๋ฌ๋ณด๊ณ ๋ ํท๊ฐ๋ ธ๋
๊ฒฝํ์ด ์์ด์ ์ ์ฉํจ์ด ์ ๋ฟ๋ ๋๋์
๋๋ค.
Flexbox Layout์ ๋ฌด์์ด๋ฉฐ, ์ด๋ป๊ฒ ์ฌ์ฉํ๋์?
ํ๋ฉด์ ๋ ์ด์์์ ๊ฐ ์์ ๊ฐ ์ฐจ์งํ๋ ๋น์จ๋ก ๊ตฌ์ฑํ๋ ๋ฐฉ๋ฒ์
๋๋ค.
๋ถ๋ชจ ์์์์ display: flex;
๋ฅผ ์ง์ ํ ํ
์์ ์์๋ค์์ flex: 1;
, flex: 3;
๋ฑ์ ๋น์จ๋ก
๊ฐ ์์๊ฐ ์ฐจ์งํ๋ ์์ญ์ ์ ํ ์ ์์ต๋๋ค.
์ด ๋, flex-direction
์ด๋ justify-content
๋ฑ์ ์์ฑ์ ์ ์ฉํ๋ฉด
๋ค์ํ ๋ฐฉ์์ ๋ ์ด์์์ ๊ตฌ์ฑํ ์ ์์ต๋๋ค.
๊ฐ์ธ์ ์ผ๋ก react native์์ ๋ ์ด์์์ ๊ตฌ์ฑํ ๋
๊ฐ View๋ง๋ค backgroundColor
ํ๋์ฉ ์ ํด ๋๊ณ
flex ๋น์จ ์กฐ์ ํ๋ค ๋ณด๋ฉด ๋จธ๋ฆฌ๋ฅผ ๊บผ๋ด๋๊ณ ์ฝ๋ฉํ ์ ์์ด์
์ฆ๊ฒจ ์ฐ๋ ๋ฐฉ๋ฒ์ด์๋๋ฐ ์ด๋ฒ์ ๊ณผ์ ํ๋ฉด์
CSS์์ background
์ background-color
๊ฐ
์ด์ง ํท๊ฐ๋ฆฌ๋ ๊ด๊ณ๋ก ์ข ๋ ๊ฒ์ํด ๋ณด๋ ค๊ณ ํฉ๋๋ค.
JavaScript๊ฐ ๋ค๋ฅธ ์ธ์ด๋ค์ ๋นํด ์ฃผ๋ชฉํ ๋งํ ์ ์๋ ์ด๋ค ๊ฒ๋ค์ด ์๋์?
์ง๊ธ ๊ธฐ์ค์ผ๋ก Javascript๊ฐ ๊ฐ์ง๋ ์ต๋ ํน์ง์ด๋ผ๊ณ ํ๋ค๋ฉด
ํ์ฅ์ฑ์ด๋ผ๋ ์๊ฐ์ด ๋ญ๋๋ค.
๋ฟ๋ง ์๋๋ผ, ๋ค๋ฅธ ์ธ์ด์ ๋น๊ตํ์ ๋
์คํํ ์ ์๋ ํ๊ฒฝ์ด ๋ธ๋ผ์ฐ์ ๋ผ๋ ์ ์์๋
์๋ฑํ๊ฒ ํธ๋ฆฌํ ์ ๊ทผ์ฑ์ ๊ฐ๊ณ ์์ง ์๋ ์ถ์ต๋๋ค.
์ฝ๋์์ ์ฃผ์์ ๋ค๋ ๋ฐ๋์งํ ๋ฐฉ๋ฒ์ ๋ฌด์์ผ๊น์?
์ฌ์ค ์ฃผ์์ ๋ค๋ ์ฌ๋ฐ๋ฅธ ๋ฐฉ๋ฒ์ ๋ํด์๋ ์ค์ค๋ก ๋งํ ์ ์๋ ๊ฒ ์ ๋ค ์ถ์ด์ ๊ตฌ๊ธ๋ง์ ํตํด Clean Code์ ์ผ๋ถ ๋ด์ฉ์ ์ฐพ์๋ดค๋๋, ์ด๋ฐ ๋ด์ฉ๋ค์ด ์์์ต๋๋ค.
๋ฐ๋์งํ ์ฃผ์ ์์ฑ ์ต๊ด
- ๋ค์ด๋ฐ์์ ์๋ฏธ๋ฅผ ์ ์ถํ ์ ์๋ ์ํฉ์์๋ ๊ตณ์ด ๋ฌด๋ฆฌํ ์ฃผ์์ ๋ฌ์ง ์๊ธฐ
- ์์ผ๋ก ์์ ๋ ์์ ์ TODO ์ฃผ์์ผ๋ก ์ค๋ช ํ๊ธฐ
- ์์นซ ๋์๋กญ์ง ์๊ฒ ๋์ด๊ฐ ์ ์๋ ๋ณ์ ๋ฑ์ ์ฃผ์์ผ๋ก ํ ๋ฒ ๊ฐ์กฐํ๊ธฐ
๋ฐ๋ฉด์, ๋ฐ๋์งํ์ง ์์ ์ฃผ์ ์์ฑ ์ต๊ด๋ ์์์ต๋๋ค.
ํ์์ ํ๋๊ฒ ๋ง๋ค๊ธฐ ์ข์ ์ฃผ์ ์์ฑ ์ต๊ด
- ๊ฐ์ ๋ด์ฉ์ ์ฌ๋ฌ ๋ฒ์ฉ์ด๋ ๋ฐ๋ณตํด์ ์ฃผ์ ์์ฑํ๊ธฐ
- ์๋ฌด ๊ฐ์น๋ ์์ง๋ง ์๋ฌด์ ์ผ๋ก ํด ์ค๋ ๋๋ก ์๋ฏธ์๋ ์ฃผ์ ๋ฌ๊ธฐ (ex. javadocs)
- ํ์ด ์ญ ๋น ์ง ์ ๋๋ก ๋๋ฌด๋๋ ๋น์ฐํ ์ฌ์ค ์ฃผ์์ผ๋ก ์ธ๊ธํ๊ธฐ
- ์ฃผ์์ผ๋ก ๊ฐ์ผ ์ฝ๋
4์ ๊ฒฝ์ฐ๋ ์ด์ ๋ฅผ ๋ฃ๊ณ ๋ณด๋ ๋ฉ๋ํ ์ ์์๋๋ฐ, ๋ ์ด์ ๊ฐ์น๊ฐ ์๋ ์ฝ๋์ ๋ํด์ ํ์๋ค์ด ์ญ์ ์ ์ฃผ์ ํ ์ ์๊ธฐ ๋๋ฌธ์ด๋ผ๊ณ ํฉ๋๋ค.
์คํฐ๋ ์ฒซ ์ฃผ์ฐจ ๊ณผ์ ๊ธฐ๋ ํ๊ณ ์ ๋ถํฐ ํด ๋ณด๊ณ ์ถ์๋ ์ฃผ์ ์์ด์ ํ ์ ์๋ ๋ถ๋ถ๊น์ง๋
ํด ๋ณด๊ณ ์ถ์๋๋ฐ, ๊ฒฐ๊ตญ localStorage
์ชฝ์์ ๋ฐ์ํ๋ ๋ฒ๊ทธ๋ฅผ ์ก์ง ๋ชปํ๊ณ
๊ทธ๋๋ง๋ ๋ ์ดํธ๋ก ์ ์ถํ๋ ๊ฒ ๋๋ฌด ์์ฝ์ต๋๋ค.. ๐ฅฒ
๊ธฐ๋ณธ์ ์ธ ๋ถ๋ถ์์ ๋๋ฌด ๋ถ์กฑํ๋ค๋ ์๊ฐ์ด ๋ค๊ณ ,
๋ง์ ๋ถ๋ค๊ป์ ์ฝ๋ ์ง์ ํด ์ฃผ์๋ฉด ๊ฐ์ฌํ๊ฒ ์ ๋ฆฌํ๊ฒ ์ต๋๋ค.
๊ฐ์ฌ๋๋ฆฝ๋๋ค.