CodeSquad๐นDay 49
Class by Crong
์ค์ 10์ ๋ฐ๋ถํฐ ์คํ 1์์ฏค๊น์ง๋ ํฌ๋กฑ์ ์์ ์ด ์์๋ค. 1๋ถ๋ ์ฝ๋๋ฆฌ๋ทฐ, 2๋ถ๋ ํ๋กํ ํ์ ์ผ๋ก ๋๋ ์ก๋ค.
๊ทธ๋ฐ๋ฐ ์ฒซ ๋ฆฌ๋ทฐ๋ก ๋ด ์ฝ๋๊ฐ ์ ํ๋์๋ค! ์ด๋ฐ ๊ฒฝ์ฐ๊ฐ ์ฒ์์ด๊ธฐ๋ ํ๊ณ , ์ฌ์ค SASS ์์ฃผ๋ก ํ๊ณ JS๋ ์์๋ก ๋น ๋ฅด๊ฒ ๊ตฌํ๋ง ํ๊ธฐ ๋๋ฌธ์ ๊ตฌ์กฐํ๋ ์ ๋์ด ์์ด์ ์ข ๋นํฉ์ ํ๋ค. ๋ฆฌ๋ทฐ๋ SASS๋ ํ์ง ์๊ณ JS๋ง ํด์ฃผ์ จ๊ธฐ ๋๋ฌธ์ ๋ ๊ทธ๋ฌ๋ค. ์์ผ๋ก๋ JS๋ฅผ ์์์ ์ผ๋ก ๊ตฌํํ ๊ฒ์ PR ๋ณด๋ด์ง ๋ง์์ผ๊ฒ ๋ค๋ ๊ฒ, ๊ทธ๋ฆฌ๊ณ ์ฌ๋งํ๋ฉด ๊ทธ๋๋ ์ด๋์ ๋ ์ค๊ณ๋ ์์ํ๊ณ ๊ตฌํ์ ํด๋๊ฐ์ผ ๊ฒ ๋ค๋ ๊ฒ์ ๊นจ๋ฌ์๋ค.
2๋ถ๋ ํ๋กํ ํ์ ์ ๋ํ ๊ฐ์์๋๋ฐ ์ ๋ง ์ฃผ๋ง์ ๊ฐ์ ์ก๊ณ ์ ๋๋ก ๊ณต๋ถํด์ผ๊ฒ ๋ค๋ ์๊ฐ์ ํ๋ค.
Mission
์์ ์ ๋ฃ๊ณ ๋๋ฌด ํผ๊ณคํด์ ์ ์ฌ๋ ๋จน์ง ์๊ณ ์ ๋ค์๋ค๊ฐ ๋์ ๋จ๋ ๋ฒ์จ 2์ 20๋ถ์ฏค์ด์๋ค. 5์๊ฐ ๊ทธ๋ฃน ๋ฆฌ๋ทฐ์ฌ์ ๋ถ๋ด๋ถ๋ด ์ปดํจํฐ๋ฅผ ์ผ๊ณ ๋ฏธ์ ์ ์์ํ๋ค.
์ด๋ฒ์๋ ๊ธฐ๋ฅ ๊ตฌํ๋ณด๋ค๋ ๊ทธ์ ์ index.js ํ์ผ์ ๋ง๊ตฌ ์์ฑํ ๋ก์ง๋ค์ ์ปดํฌ๋ํธ๋ก ๋ถ๋ฆฌํ๋ ๋ฆฌํฉํ ๋ง์ ํ๋ค.
๊ทธ๋ฆฌ๊ณ ํค์๋๋ฅผ ๊ฒ์ํ ๋ ๊ธฐ์กด์๋ ํด๋ผ์ด์ธํธ ์ชฝ์์ ์ฒ๋ฆฌํ๋ ๊ฒ์ express์์ query๋ฅผ ์ด์ฉํด์ ๊ฒ์ํ ์ ์๋๋ก ํ๋ค.
์ฝ๋์ค์ฟผ๋ ์ ๊ท ์๊ฐ์ด ๋๋๊ณ ๋์๋ ์๋ ๋ธ๋ก๊ทธ ๊ธ์ ์ฐธ๊ณ ํด์ ๋ด ์ฝ๋์ ์ ์ฉํด ๋ณด์๋ค. ์์ง state ๋ถ๋ถ์ ์ ์ฉํ์ง ๋ชปํด์ ๋ด์ผ ์๋ํ ์์ ์ด๋ค.
Algorithm
์ค๋์ ์๊ณ ๋ฆฌ์ฆ์ ๋์ ํ๋ค๊ฐ ๋ชป ํ๊ณ , ๋ฏธ๋ฆฌ ๋ค์ ์ฃผ ์์์ผ ์๊ณ ๋ฆฌ์ฆ์ ํ์๋ค. ๋ด์ผ์ ๊ทธ๋์ 2๊ฐ๋ฅผ ํ์ด์ผ ํ๋ค.
๋ฐค์ ๊ฒ๋ํ์ด์ ์์๋๋ฐ, ์ง๋ฏธ๊ฐ Event Bubbling์ ํ์ฉํ๋ ๊ฒ์ ๋ํด์ ์ง๋ฌธ์ ํด์๋ค. ๋๋์ ํจ๊ป ๋ฌธ์ ์ํฉ์ ๋ณด์๋ค. ์ถ์ฒ ๊ฒ์์ด layer๋ input ๋ถ๋ถ์ ์ ์ธํ๊ณ ๋ค๋ฅธ ๋ถ๋ถ์ด ํด๋ฆญ๋๋ฉด ์์ด์ ธ์ผ ํ๋ค. ์ด ๋ document์ click ์ด๋ฒคํธ๋ฅผ ๊ฑธ์ด์ ํด๊ฒฐํ๋๋ฐ, closest๋ฅผ ํ์ฉํด์ ํด๋ฆญ๋ target์ ์กฐ์์ด ๋ง์ฝ layer๊ฐ ์๋ ๊ฒฝ์ฐ, ์ฆ layer ๋ฐ๊นฅ์ด ํด๋ฆญ๋์์ ๊ฒฝ์ฐ layer๋ฅผ ์์ ์ค๋ค. closest๋ฅผ ํ์ฉํ๋ ๊ฒ์ ์ ์ํ๊ณ , ์ฝ๋๊ฐ ๊น๋ํด์ง ์ ์์๋ค.
'What I learned > CodeSquad Log' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
CodeSquad Day 52 : Front-end Week 6 (0) | 2022.03.23 |
---|---|
CodeSquad Day 51 : Front-end Week 6 (0) | 2022.03.22 |
CodeSquad Day 48 : Front-end Week 5 (0) | 2022.03.16 |
CodeSquad Day 47 : Front-end Week 5 (0) | 2022.03.16 |
CodeSquad Day 46 : Front-end Week 5 (0) | 2022.03.15 |