๋ณธ ํฌ์คํธ๋ ์นด์นด์ค ์ปจํผ๋ฐ์ค if(kakao) dev 2022 ์ปจํผ๋ฐ์ค ๋ด์ฉ ๋ฐ ์๋ฃ๊ฐ ํฌํจ๋์ด ์์ต๋๋ค.
ํน์ฌ๋ ๊ถ๋ฆฌ ๊ด๋ จ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ค๋ฉด, ๊ธ ์์ / ์ญ์ ๋ฅผ ์งํํ๋๋ก ํ๊ฒ ์ต๋๋ค.
๐ 0. ์ ํ๋ธ ๋ค์๋ณด๊ธฐ ์์
๐ค 1. ์ฝ๋ ๊ฐ๋ ์ฑ ๊ฐ์ ๊ฒฝํ
์ผ๋ฐ์ ์ธ ๋ฆฌํฉํ ๋ง์, ๊ธฐ์กด์ ๋ก์ง์ ๋ณํจ ์์ด ์ฝ๋์ ๊ตฌ์กฐ ํน์ ๊ฐ๋ ์ฑ์ ๋์ด๋ ์์ ์ ๋๋ค.
์ค๋ณต์ฝ๋๋ฅผ ์ ๊ฑฐํ๊ฑฐ๋, ๊ธด ์๋ธ๋ฃจํด์ ์ชผ๊ฐ๋ ์์ , ์ฌ๋ฌ๊ฐ์ง๋ฅผ ์ํํ๋ ํจ์์์ ์ญํ ์ ๋ถ๋ฆฌ, ์ ์ญ๋ณ์ ์ค์ , ์ฌ๋ฐ๋ฅด์ง ์์ ๋ค์ด๋ฐ ์์ , ์ฌ์ฉํ์ง ์๋ ์ฝ๋ ์ ๊ฑฐ ๋ฑ์ด ์ผ๋ฐ์ ์ธ ๋ฆฌํฉํ ๋ง์ ์๋ฏธํ๋ค๊ณ ํฉ๋๋ค.
ํ์ง๋ง ์นด์นด์ค์ coze ๊ฐ๋ฐ์๋์, ์์ ์ ์ฝ๋๊ฐ ๋ค๋ฅธ ์ฌ๋๋ค์๊ฒ ์ฝ๊ฒ ์ดํด๊ฐ ๊ฐ๋๋ก ๋ง์ ๋ ธ๋ ฅ์ ํ์ จ์ต๋๋ค.
์ผ๋ฐ์ ์ธ ๋ฆฌํฉํ ๋ง์ ๋ฒ์ฃผ์์ ํ์ฅํ์ฌ, "๋จ๋ค์๊ฒ ์ฝ๊ฒ ์ดํด๋๋๋ก ํ ์ ์์๊น?"ํ๋ ๊ณ ๋ฏผ์ ํฌํจํ์ฌ ๋ฆฌํฉํ ๋ง์ ์งํํ์ จ์ต๋๋ค.
์ฒ์์๋ ์ด๋ฌํ ์๊ณ ์ธ์ฌํ ๊ณ ๋ฏผ์ด ์ธ๋ฐ ์๋ ์๊ฐ์ ๋ญ๋นํ ๊ฒ์ ์๋์ง ์ฐ๋ คํ์ จ์ง๋ง, ๋์ด์ผ ๋ณด๋ฉด ์ ์ง๋ณด์ ๋ฉด์์ ๊ต์ฅํ ๋์์ด ๋ง์ด ๋์๋ค๊ณ ํฉ๋๋ค.
"๋จ๋ค์๊ฒ ์ฝ๊ฒ ์ดํด๋๋๋ก ํ ์ ์์๊น?"๋ผ๋ ์ค์ค๋ก์ ๋ํ ์ง๋ฌธ์ ํตํด ์ฝ๋ ๊ฐ๋ ์ฑ์ ๊ฐ์ ํ ๊ฒฝํ์ ํฌ๊ฒ ๋ ๊ฐ์ง๋ก ๋๋์ด์ง๋ค๊ณ ํฉ๋๋ค.
1) ์ ํํ ๋จ์ด๋ฅผ ๊ณ ๋ฅด๊ธฐ
2) ์ ๋ณด์ด๋ ํํ๋ก ์์ฑํ๊ธฐ
1-1. ์ ํํ ๋จ์ด ๊ณ ๋ฅด๊ธฐ
1) ๋ค๋ฅธ ๋ป์ ๊ฐ์ง ๋จ์ด์ ๊ตฌ๋ถํ๊ธฐ
const data = await loadData();
์ด ์ฝ๋๋ผ์ธ์ ์ธ๋ป ๋ณด์์ ๋ ํฌ๊ฒ ๋ฌธ์ ๊ฐ ์์ด ๋ณด์ ๋๋ค. ํจ์ ์ด๋ฆ์ ํตํด์ ๋ฐ์ดํฐ๋ฅผ ๋ถ๋ฌ์จ๋ค๋ ๊ฒ๋ ์ ์ ์๊ณ , ํด๋น ๋ฆฌํด ๊ฐ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ๋ฐ์์ฌ ์ ์๋ค๋ ๊ฒ๋ ์ ์ ์์ต๋๋ค.
๊ทธ๋ฌ๋ coze๋์, ์ธ์ธํ ๋ํ ์ผ๋ก๋ถํฐ ํด๋น ํจ์์ ์ ํํ ์ญํ ์ ๋ช ์ํ๋ ค๊ณ ๋ ธ๋ ฅํ์ จ์ต๋๋ค.
load : ๊ฐ์ ธ์์ ์ฃ๋ค
fetch : ๊ฐ์ ธ์ค๋ค
load๋ ์ด๋ฏธ ํน์ ๊ณต๊ฐ์ ์ฃ๋ ๊ฒ๊น์ง ์๊ฒฐ๋ ๊ฒฝ์ฐ๋ฅผ ์๋ฏธํฉ๋๋ค. ์ฆ loadData()๋ผ๋ ํจ์ ๋ด๋ถ์์๋, ํน์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์จ ํ์ ํน์ ๊ณต๊ฐ์ ์ฃ๊ณ ๋ ๊ฒ๊น์ง ํฌํจํ๋ค๋ ๊ฒ์ ๋๋ค.
๋ง์ฝ const data = await loadData(); ๋ผ๊ณ ํ๋ฉด, loadData์์ ๋ฐ์ดํฐ๋ฅผ ํน์ ๊ณต๊ฐ์ ํ ๋ฒ ์ฃ๊ณ , const data ๋ถ๋ถ์ ํ ๋ฒ ๋ ์ฃ๋, "์ญ์ ์"๊ณผ ๊ฐ์ ๋๋์ ๋ฐ์๋ค๊ณ ํฉ๋๋ค.
๊ทธ๋์ const data = await fetchData();๋ก ๋ณ๊ฒฝํ๋ฉด, fetchData() ํจ์๋ ๋จ์ํ ๋ฐ์ดํฐ๋ฅผ "๋ถ๋ฌ์จ๋ค"์ ์ญํ ์ ๋ช ์ํ๊ณ , const Data์ ์ ์ฅํจ์ผ๋ก์จ fetchData ํจ์์ ์ญํ ์ ์ ํํ๊ฒ ํํํ ์ ์์์ต๋๋ค.
๋ค๋ฅธ ๋ฐฉ๋ฒ๋ ์์ต๋๋ค.
const success = await loadData();
loadData() ๋ฉ์๋๋ฅผ ํตํด, ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์จ ํ์ ํน์ ๊ณต๊ฐ์ ์ฃ๋ ๊ฒ๊น์ง ์๊ฒฐํ ์ํ์์ ์ ์ ์์ต๋๋ค.
๊ทธ ์ดํ์ ์ฑ๊ณต ์ฌ๋ถ์ ๋ํด์๋ง ๋ฆฌํด๋ฐ๋ ๊ฒ๋ ์ข์ ๊ฐ๋ ์ฑ ์๋ ์ฝ๋๋ผ๊ณ ์ค๋ช ํ์ จ์ต๋๋ค.
๋ ๋ค๋ฅธ ์ฌ๋ก๋ฅผ ํ ๋ฒ ์ดํด๋ด ์๋ค.
" ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ฌ ๋ get์ด ์ข์๊น์? query๊ฐ ์ข์๊น์? "
๊ฐ์ธ์ ์ผ๋ก get์ด๋ผ๋ prefix๋ฅผ ์ฌ์ฉํด์ ๋ง์ ํจ์๋ฅผ ๋ง๋ค์ด ์๋ ์ ์๊ฒ๋ ๊ต์ฅํ ํผ๋์ค๋ฌ์ ๋ ์ง๋ฌธ์ด์์ต๋๋ค.
๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๋ฉด, ๋น์ฐํ get์ด ๋ง๋๊ฑฐ ์๋๊น? ๋ผ๊ณ ๋จ์ํ ์๊ฐํ์์ผ๋, coze๋์ ์๋์ ๊ฐ์ ์๋ฏธ๋ก ์ ๊ทผํ์ จ์ต๋๋ค.
get : ๊ฐ์ ธ์ค๋ค, ๊ฒฐ๊ณผ๋ฅผ ๋น์ฐํ ๊ฐ์ ธ์ฌ ๊ฒ์ผ๋ก ๊ธฐ๋ํฉ๋๋ค!
query : ์ง๋ฌธํ๋ค, ๊ฒฐ๊ณผ๊ฐ ์๋์ง ์ง๋ฌธํ๋ ๊ฒ์ด๋ฏ๋ก, ๊ฒฐ๊ณผ๊ฐ ์์ ์๋ ์์ต๋๋ค.
์ด๋ฌํ ๋จ์ด์ ๋์์ค๋ ๊ฒฐ๊ณผ์๋ ์ํฅ์ ๋ฏธ์นฉ๋๋ค.
get์ ๊ฒฐ๊ณผ๋ฅผ ๋น์ฐํ ๊ฐ์ ธ์ฌ ๊ฒ์ผ๋ก ๊ธฐ๋ํ๊ธฐ ๋๋ฌธ์, ๋ถ๋ฌ์ฌ ๊ฐ์ด null์ด๋ผ๋ฉด, Error๊ฐ ๋ฐ์ํ๋ ๊ฒ์ด ์ณ๋ค๊ณ ํฉ๋๋ค.
query์ ๊ฐ์ ๊ฒฝ์ฐ์๋ ๊ฒฐ๊ณผ๊ฐ ์์ ์๋ ์์ผ๋ฏ๋ก, ์ด ๊ฒฝ์ฐ์๋ null์ ๊ฐ๊ฒ ๋๋ ๊ฒ์ด์ฃ .
๋ฐ๋ผ์ ๋จ์ํ ๊ฒฐ๊ณผ๊ฐ ์์์ง ํ์ธํ๊ณ ์ถ์๋๋ get๋ณด๋ค query๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ๋์ฑ ์ ํฉํ๋ค๊ณ ํฉ๋๋ค.
๋ํ get ๊ฐ์ ๊ฒฝ์ฐ์๋, ๊ฐ์ ธ์จ ๋ค ๋์์ ์ถ๊ฐ์ ์ธ ํ์ฉํ๊ธฐ๋ฅผ ๊ธฐ๋ํ๋ค๊ณ ํฉ๋๋ค.
๋์์ ๊ฐ์ ธ์จ ํ ๋์์ ํ์ฉํ๋ ค๋ ๊ฒฝ์ฐ์๋ get์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
ํ๋ก ํธ์๋์์ UI ์ปดํฌ๋ํธ์ ๊ด๋ จํด์ ์์น๋ฐ ํ๋จ ์ฐ๊ด ๊ฒ์์ด ๋ถ๋ถ์์ ํ ์์๊ฐ HighLight๋๋ ํ์์ ์ ๊ฑฐํ์ค ๋์๋ ๋จ์ด ๊ตฌ๋ณ์ ํตํด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์์๋ค๊ณ ํฉ๋๋ค.
๊ธฐ์กด์๋ select๋ฅผ ์ฌ์ฉํ๊ณ ์์๊ธฐ ๋๋ฌธ์, highlight๋๋ ๊ฒ์ ๋น์ฐํ ๊ฒ์ด์์ต๋๋ค.
๋จ์ํ Search ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ๋ง์ผ๋ก๋ ์ฝ๊ฒ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์์๋ค๊ณ ํฉ๋๋ค.
์ด์ฒ๋ผ ๋จ์ด์ ๋ช ํํ ์๋ฏธ๋ฅผ ํ์ ํ๋ ๊ฒ์ผ๋ก ๋ค๋ฅธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ฉ์๋๋ฅผ ํ์ฉํ ๋์๋ ํฐ ๋์์ด ๋๋ค๊ณ ํฉ๋๋ค.
2) ๋ณด๋ค ๊ตฌ์ฒด์ ์ธ ๋จ์ด๋ก ๋ณ๊ฒฝํ๊ธฐ
๊น์ํ ์๊ฐ๋ "์ง์ฆ๋๋ค"๋ผ๋ ํํ์ ์ฌ์ฉํ์ง ์๊ธฐ๋ฅผ ๊ถ์ฅํฉ๋๋ค. ์ง์ฆ์ด๋ผ๋ ๊ฐ์ ์ ๋ค์ํ ๊ฐ์ ์ด ๋ญ๋ฑ๊ทธ๋ ค์ง, ์ถ์์ ์ธ ๊ฐ์ ์ด๋ผ ์ ํํ ๊ฐ์ ์ ํ์ ํ๊ธฐ ์ด๋ ต์ต๋๋ค.
์๋ฅผ ๋ค์ด, ์์ดํ ๊ฒฝ์ฐ๋ ์ง์ฆ์ด ๋ ์ ์๊ณ , ์ต์ธํ ๊ฒฝ์ฐ์๋ ์ง์ฆ์ด ๋ ์ ์์ต๋๋ค. ์ฆ ๋ชจํธํ ํํ์ ๊ธ์ฐ๊ธฐ์ ๋ฐ์ํ๋ฉด ํ์์ ์ ํํ ๊ฐ์ ์ด ์ ๋ฌ๋์ง ์๋๋ค๋ ๊ฒ์ด์ฃ .
coze๋์ ์ฝ๋ ์์ฑ์ ๊ธ์ฐ๊ธฐ์ ์ ์ฌํ๋ค๊ณ ํฉ๋๋ค. ๊ทธ๋์ ์ฝ๋ ์์ฑ์ ํ ๋์๋ ์ถ์์ ์ด๊ณ ๊ด๋ฒ์ํ ์๋ฏธ๋ฅผ ๋ดํฌํ ๋จ์ด ๋ณด๋ค ๊ตฌ์ฒด์ ์ธ ๋จ์ด๋ก ๋ณ๊ฒฝํ๋ ๊ฒ์ด ์ข๋ค๊ณ ํฉ๋๋ค.
์์๋ฅผ ํ ๋ฒ ์ดํด๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค!
if(expirationTime < PROMOTION_END_TIME){
return remainTime / totalTime;
}
์์ ์ฝ๋๋ ์ดํดํ๋๋ฐ ํฐ ๋ฌด๋ฆฌ๊ฐ ์์ต๋๋ค. ๋ง๋ฃ ์๊ฐ์ ๋น๊ตํ ์กฐ๊ฑด์ ํต๊ณผํ๋ฉด, ๋จ์ ์๊ฐ์ ์ ์ฒด ์๊ฐ์ผ๋ก ๋๋๋ ๊ฒ์ ์ดํดํ ์ ์์ฃ .
ํ์ง๋ง, Time์ ๋ชจํธํ ๋จ์ด์ ๋๋ค. Time์ ์ด๋ค ํ์์ผ๋ก ์์ฑ๋ ๊ฒ์ธ์ง ์์ง ๋ชปํฉ๋๋ค. ์๊ฐ-๋ถ-์ด๋ก ์ด๋ค์ง ์๊ฐ์ธ์ง, ๋ ์ง๊น์ง ํฌํจ๋ ํ์์ธ์ง, ๋ ~์ด์ ๋จ์๋ฅผ ๋ชจ๋ ๋ณํํด ์ด๋ก ๋ํ๋ธ ๊ฐ์ธ์ง ์์ง ๋ชปํฉ๋๋ค.
if(expirationDate < PROMOTION_END_DATE){
return remainDuration / totalDurtion;
}
๋ค์์ ๋ณ๊ฒฝ๋ ์ฝ๋์ ๋๋ค. ์ ํํ Date๋ก 'Date'ํ์์ ๊ฐ์ ์ป์ด์ค๊ฒ ๋ค! ๋ผ๋ ์๋ฏธ๋ฅผ ๋ถ์ฌํ๊ณ ,
๋๋ ์ ์๋ ๊ฒ์ ์๊ฐ์ด ์๋ '์'์ ๋ปํ๋ ์๊ฐ์ ์ฐจ์ด๋ฏ๋ก Duration์ ์ฌ์ฉํด ์๋ฏธ๋ฅผ ๋ถ์ฌํ ๋ฐฉ์์ผ๋ก ๊ฐ๋ ์ฑ์ ๊ฐ์ ํ๋ค๊ณ ํฉ๋๋ค.
ํ์คํ ์ด์ ๋ณด๋ค๋ ์๋ฟ๋ ๊ฒ ์์์ต๋๋ค.
์ด ์ธ์๋ ๋ชจํธํ ๋จ์ด๋ฅผ ๊ตฌ์ฒด์ ์ผ๋ก ํํํ ์ ์๋ ์์๋ ์๋์ ๊ฐ๋ค๊ณ ํฉ๋๋ค.
๋์ฒด ๋จ์ด | |
get(๊ฐ์ ธ์ค๋ค) | extract(์ถ์ถํ๋ค) / parse(๋ถํดํ๋ค) / aggregate (ํฉ์น๋ค) |
number(์ซ์) | limit(์ ํ์ด ์๋ ์) / count(์ด๊ณ) |
change(๋ณ๊ฒฝํ๋ค) | convert(๋ณํํ๋ค), filter(๊ฑฐ๋ฅด๋ค), override(๋ฎ์ด์ฐ๋ค) |
changed(๋ฐ๋) | dirty(๋๋ฌ์ด = ์์ ์ด ์ด๋ฃจ์ด์ง) |
์๋ฅผ ๋ค์ด, extract๋ฅผ ์ฌ์ฉํ๋ฉด, parameter๋ก ๋ค์ด์จ ๊ฐ ์ค์ ์ผ๋ถ ํ๋๋ง ์ถ์ถํด์ ๋ฐํํ๋ค๋ ๊ฒ์ ์ ์ ์์ต๋๋ค.
์ผ๋ฐ์ ์ผ๋ก get๋ฅผ ์ฌ์ฉํ ๊ฒฝ์ฐ๋ณด๋ค ํจ์ฌ ์ดํดํ๊ธฐ ํธํ ๊ฒ์ ๋๋ค.
3) ํญ์ ์ ํํด์ผ ํ๋๊ฐ?
์ ํํ ๋จ์ด๋ก ๋ช ์ธํ๋ ๊ฒ์ ๋ถ๋ช ํ ๊ฐ๋ ์ฑ์ ํฐ ๋์์ ์ฃผ์์ง๋ง, ๋๋ก๋ ํญ์ ์ ํํ ํ์๋ ์๋ค๊ณ ํฉ๋๋ค.
์์ ์ฝ๋๋ฅผ ๋ณด๋ฉด, ์์ผ๋ก ๋ถ/์/์ผ์ ์ด๋จ์๋ก ๋ณ๊ฒฝํ ์์ ์ด๊ธฐ ๋๋ฌธ์, ์ ํํ ํํ์ผ๋ก๋ MIN_TO_SEC, HOUR_TO_SEC, DAY_TO_SEC๋ก ํํํ๋ ๊ฒ์ด ์ฌ๋ฐ๋ฆ ๋๋ค.
ํ์ง๋ง, ์ฝ๋๋ฅผ ์ดํด๋ณด๋ฉด, ์๋์ ๊ฒฝ์ฐ๊ฐ ์ ์ฒด์ ์ธ ๋งฅ๋ฝ์ด ๋์ฑ ๋ ์ ์ฝํ๋ ๊ฒฝํฅ์ด ์์ต๋๋ค. ๋ถ๋ช ์ ํํ ํํ์ ์์ ์ฝ๋์ง๋ง์.
๋ฐ๋ผ์ ํญ์ ์ ํํ ํํ์ ์ฐพ๊ธฐ ๋ณด๋ค๋ ๋ฌธ๋งฅ์ ํ์ ํด ๊ฐ๋ ์ฑ ํ๋ณด์ ํ๋ณดํ๋ ค๋ ๋ ธ๋ ฅ์ด ํ์ํ๋ค๊ณ ํฉ๋๋ค.
1-2. ์๋ณด์ด๋ ํํ๋ก ์์ฑํ๊ธฐ
๊ธ์ฐ๊ธฐ๋ฅผ ํ ๋ ํ ๋์ ์ ๋ค์ด์ค๊ฒ ์์ฑํ๋ ค๋ฉด ๋ณดํต ์ด๋ค ๊ฒ๋ค์ ์ฌ์ฉํ ๊น์?
๋จ์ํ ๊ธ๋ก ํํํ๋ ๊ฒ๋ณด๋ค, ํ๋ฅผ ์ฌ์ฉํ๊ฑฐ๋ ์ฉ์ด ์ ๋ฆฌ, ๋ชฉ์ฐจ, ๊ทธ๋ฆผ, ์ฐจํธ ๋ฑ์ ์ฌ์ฉํด ์๊ฐ์ ์ผ๋ก ๋ํ๋ด์ด ๋์ ๋์ฑ ๋ ์ ๋ณด์ด๊ฒ ํํํฉ๋๋ค.
coze๋์ ์ด๋ฌํ ๋ถ๋ถ์ ์ฝ๋ ์์ฑ์์๋ ์ฐ๊ณํ์ฌ ๊ฐ๋ ์ฑ์ ๋์ด๋ ค๋ ๋ ธ๋ ฅ์ ํ์ต๋๋ค.
1. ํ
const type =
exception
? undefined
: condA
? 'A'
: condB
? condC
? 'BC'
: 'BD'
: 'A';
์์ ์ฝ๋๋ ์ง๋ ํ ์ผํญ ์ฐ์ฐ์์ ํฅ์ฐ์ ๋๋ค. ๋ก์ง์ ์ ์คํ๋ ์ง ๋ชจ๋ฅด์ง๋ง, ์ง๊ด์ ์ผ๋ก ๋์ ์ด ์ฝ๋๊ฐ ๋ค์ด์ค์ง ์์๋ค๊ณ ํฉ๋๋ค.
์กฐ๊ฑด์ ๋ฐ๋ผ ๊ฐ์ด ๊ฒฐ์ ๋๋ ๋ก์ง์ ํ๋ก ๋ํ๋ด๋ฉด ์ด๋จ๊น์?
๋ค์๊ณผ ๊ฐ์ด ํ ๋์ ์ด๋ค ์กฐ๊ฑด์ ์ํด ๊ฐ์ด ๊ฒฐ์ ๋๋ ์ง ์ ์ ์์ต๋๋ค.
์ด๋ฅผ ์ฝ๋๋ก ์ต๋ํ ํ์ ๋น์ทํ๊ฒ ๋ํ๋ธ ๊ฒ์ด ์๋์ ์์๋ผ๊ณ ํฉ๋๋ค.
let type = 'A';
if (exception) type = undefined;
if (condA) type = 'A';
if (condB) {
if (condC) type = 'BC';
else type = 'BD';
}
ํ์คํ ์ ๋ณด๋ค ๋ช ํํ๊ฒ ๊ตฌ์กฐ๋ฅผ ํ์ ํ ์ ์์์ต๋๋ค. ๋น๋ก if ๋ฌธ์ด ๋์ด๋๋ค๊ณ ํ๋๋ผ๋, ๋ณต์กํ ์ผํญ์ฐ์ฐ์๋ฅผ ์ฐ์ด์ด ์ฌ์ฉํ๊ธฐ ๋ณด๋ค๋ ์ด๋ฐ ๊ฒ์ด ๊ฐ๋ฐ์๊ฐ ์ดํดํ๊ธฐ์ ํจ์ฌ ํธํ ์ฝ๋์์ ์ ์ ์์์ต๋๋ค.
2. ๋ชฉ์ฐจ
UI ์ปดํฌ๋ํธ์ ์ ๋ค ์์น์ ๊ฐ์ ๋ํ๋ด๋ zIndex์ ๊ด๋ จ๋์ด ๋์จ ํค์๋๋ก, ํ๋ก ํธ์๋์ ๋ํ ์ง์์ด ๋ถ์กฑํ์ง๋ง ์์ฝํ์๋ฉด,
ํ๋ก ํธ์๋ UI์ ๋ชจ๋ ์ปดํฌ๋ํธ์ zIndex ๊ฐ์ ๊ด๋ฆฌํ๋ '๋ชฉ์ฐจ'๋ฅผ ์์ฑํด ํด๋น ๊ฐ์ ๊ฐ์ ธ์ค๋ ๋ฐฉ์์ผ๋ก ์ฝ๋๋ฅผ ๋ณ๊ฒฝํ์ต๋๋ค.
๋ฐฑ์๋์์๋ ๋ชฉ์ฐจ๋ก ๋ํ๋ด๋ ๊ฒ์, enum ํน์ ์คํํฑ ๋ณ์๋ฅผ ํตํด์ ์ถฉ๋ถํ ๊ตฌํํ ์ ์๋ ๋ฐฉ๋ฒ์ด๋ ํ์์ ์ ๊ทน์ ์ผ๋ก ๊ธฐ์ฉํ๋ ค๋ ๋ ธ๋ ฅ์ ํด์ผ ํ ๊ฒ ๊ฐ์ต๋๋ค.
3. ์ฉ์ด์ ๋ฆฌ
์ฉ์ด ์ ๋ฆฌ์ ๊ฐ์ ๊ฒฝ์ฐ๋, ์ดํดํ๊ธฐ ์ด๋ ค์ด ํํธ๋ฅผ ๋ ์๊ฐ ์ฝ์ ๋ ๋์์ด ๋ ์ ์๋๋ก, ๋ฐ๋ก ์ค๋ช ํ ๋ถ๋ถ์ ์๋ฏธํฉ๋๋ค.
์๋์ ์ฝ๋๊ฐ ์ฉ์ด ์ ๋ฆฌ๋ฅผ ์ฝ๋์ ์ ์ฉํ ๊ฒฝ์ฐ๋ผ๊ณ ํฉ๋๋ค. ์ฝ๋๊ฐ ์กฐ๊ธ ๋ ๊ธธ์ด์ก๋ค๊ณ ํ๋๋ผ๋ ์ฐ์ฐ์ ๋ํ ๋ถ๊ฐ ์ค๋ช ์ ์ค๊ฐ์ ๋ณ์๋ฅผ ํตํด ๋ฃ์ ์ ์์ผ๋ฏ๋ก ํ์คํ ๋ํ ์ผํ ์ฝ๋๋ผ๊ณ ๋ณผ ์ ์์ต๋๋ค.
๊ฐ์ธ์ ์ธ ์๊ฐ์ด์ง๋ง, ์์ ๊ฐ์ ์ฝ๋ฉ ๋ฐฉ์์ ์ต์ํด์ ธ์ ๊ทธ๋ฐ์ง ์๋์ ์ฝ๋๊ฐ ๋์ ์ ๋ค์ด์ค๋ ๋๋์ ์๋ ์ต๋๋ค.
๋ฌผ๋ก ์ฝ๋ค๋ณด๋ฉด, ์ด๋ค ์๋ฏธ์ธ์ง ์ ๋ค์ฌ๋ค ๋ณผ ์๋ ์๊ฒ ์ง๋ง์.
์ ์ ํ ์ฌ์ฉ์ ํตํด ๊ฐ๋ ์ฑ์ ๋๋ฆฌ๋ ๊ฒ์ ์ ๋ชซ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค.
๐ฎ 2. ํ๊ธฐ
์ฝ๋ ์์ฑ์ ํ๋ฆฌํฐ๋ ์ ํด์ง ์ ํํ ์ด๋ก ์ด ์๋ ๊ฒ์ด ์๋๋ผ, ๊ฐ๋ฐ์์ ๊ฒฝํ์ ๋ง์ด ๋ฌ๋ ค์์ต๋๋ค.
์ด๋ฐ ์ธ์ฌํ ๋ฐฐ๋ ค๊ฐ ๋๋ณด์ด๋ ๊ฐ๋ฐ์์ ์๊ฐ์ ๊ณต์ ๋ฐ์ ์ ์์ด์ ์ข์์ต๋๋ค.
๊ฐ์ฅ ๊น์ ๊ฐ๋ช ์ ๋ฐ์ ๋ถ๋ถ์, "์ ํํ ๋จ์ด" ํํธ์์ต๋๋ค. ์๋ฌด๋ฐ ์๊ฐ ์์ด ๋จ์ํ๊ฒ ์ฌ์ฉํ๋ ๋จ์ด๋ค์ด ๊ทธ๋ฐ ๋ป์ ๋ดํฌํ๊ณ ์์๋์ง ๋ชฐ๋๋ค๋ ์ ์์ ์กฐ๊ธ ๋ถ๋๋ฝ๋ค์.
๋น๋ก ํ๋ก ํธ์๋ ์ฝ๋๊ฐ ๋ง์ด ๋์ ์ดํด๊ฐ ๋ถ์กฑํ ๋ถ๋ถ๋ ์์์ผ๋ "์, ๋ด ์ฝ๋์์๋ ์ถฉ๋ถํ ์ ์ฉํ ๋งํ ๋ถ๋ถ์ด ๋ง๋ค!"๋ผ๊ณ ๋๋ ๋ถ๋ถ๋ ๋ง๊ธฐ ๋๋ฌธ์ ๊ต์ฅํ ์ ์ตํ ์ปจํผ๋ฐ์ค์์ต๋๋ค.
๐ ์ถ์ฒ
[์ฌ๋ผ์ด๋] https://speakerdeck.com/kakao/seomsehan-isfpyi-kodeu-gadogseong-gaeseon-gyeongheom
[์ปจํผ๋ฐ์ค] https://www.youtube.com/watch?v=emGLxi0LvNI&list=LL&index=46&t=165s