๐ฅ ์ค๋ ์ด๋์ ๋์ ํด๋ณด์ จ๊ณ , ๋ฌด์์ ๋ฐฐ์ฐ์ จ๋์?
๐ ํ์ตํ์๋ฉด์ ๊ถ๊ธํ์ ๋ถ๋ถ์ด๋, ์ด๋ ค์ ๋ ์ ์ ๋ญ๊น์?
์๋ฐ์คํฌ๋ฆฝํธ๋ง์ผ๋ก SPA๋ฅผ ๊ตฌํํ๊ธฐ ์ํด์
History API
์ ๋ํ ์ดํด๊ฐ ํ์ํ๋ค.์ง์ ์ด๋ฒคํธ๋ฅผ ๋ง๋ค ์ ์๋ Web API CustomEvent๋ฅผ ์ฌ์ฉํ๋ฉด ๋๋ค.
Event
์CustomEvent
์ ์ฐจ์ด์ ์CustomEvent
์ ๋ ๋ฒ์งธ ์ธ์์ ๊ฐ์ฒด๊ฐ ๋ค์ด๊ฐ ์ ์๋๋ฐ, ์ด ๊ฐ์ฒด์detail
์ด๋ผ๋ ํ๋กํผํฐ๋ฅผ ์ถ๊ฐํด ์ปค์คํ ์ด๋ฒคํธ ๊ด๋ จ ์ ๋ณด๋ฅผ ๋ช ์ํ๊ณ , ์ ๋ณด๋ฅผ ์ด๋ฒคํธ์ ์ ๋ฌํ ์ ์๋ค.
1 2 3 4 5 6
const newEvent = new CustomEvent("hello", { detail: { name: "์์" } }); // ์ด๋ฒคํธ ๊ฐ์ฒด๋ฅผ ์์ฑํ ๋ค์์ dispatchEvent(event)๋ฅผ ํธ์ถํด ์์์ ์๋ ์ด๋ฒคํธ๋ฅผ ๋ฐ๋์ '์คํโ์์ผ์ค์ผ ํฉ๋๋ค // (dispatch๋ ์ผ์ '์ฒ๋ฆฌํ๋คโ๋ผ๋ ๋ป์ ๊ฐ์ง ์์ด๋จ์ด์ ๋๋ค โ ์ฎ๊ธด์ด). // ์ด๋ ๊ฒ ์ด๋ฒคํธ๋ฅผ ์คํ์์ผ์ค์ผ ํธ๋ค๋ฌ๊ฐ ์ผ๋ฐ ๋ธ๋ผ์ฐ์ ์ด๋ฒคํธ์ฒ๋ผ ์ด๋ฒคํธ์ ๋ฐ์ํ ์ ์์ต๋๋ค. newEvent.dispatchEvent(newEvent);
๐ ์ฐธ๊ณ
์ปค์คํ ์ด๋ฒคํธ ๋์คํจ์น - ๋ชจ๋ JavaScript ํํ ๋ฆฌ์ผ
๋ฐ๋๋ผ ์๋ฐ์คํฌ๋ฆฝํธ๋ก ๋ฌดํ ์คํฌ๋กค ๊ตฌํํ๊ธฐ
- ์๋ ์ฐธ๊ณ ํ ํฌ์คํธ๋ ๋ชจ๋
Intersection Observer API
๋ฅผ ์ด์ฉํด ๋ฌดํ ์คํฌ๋กค์ ๊ตฌํํ๋ค. ๋ฏธ์ธํ ์ฐจ์ด๋ ๊ด์ฐฐ ๋์์ ๋ฌด์์ผ๋ก ์ง์ ํ๋๋๋ค. (1๏ธโฃ ํ์ฌ ํ๋ฉด์์ ๋ณด์ด๋ ๋ชฉ๋ก ์์์ ๊ฐ์ฅ ๋ง์ง๋ง ์์๋ฅผ ๊ด์ฐฐ)ํ ๊ฒ์ธ์ง ํน์ (2๏ธโฃ ๋ชฉ๋ก ์์ ํ๋จ์ ๊ด์ฐฐ์ ์ํ ๋์์ ๋ฏธ๋ฆฌ ์ ์)ํ ๊ฒ์ธ์ง๋ค. - 1๏ธโฃ ํ์ฌ ํ๋ฉด์์ ๋ณด์ด๋ ๋ชฉ๋ก ์์์ ๊ฐ์ฅ ๋ง์ง๋ง ์์๋ฅผ ๊ด์ฐฐํ๋ ๊ฒฝ์ฐ๋ ul์ last-child๋ฅผ ๊ด์ฐฐํ๋ค๊ฐ ๋ง์ฝ ๋ทฐํฌํธ ๋ด๋ก ๋ค์ด์จ๋ค๋ฉด ์๋ก์ด ์์ appendํ๋ค. ๊ทธ๋ฌ๋ฉด ๋งจ ๋ง์ง๋ง์ผ๋ก ์ ์์๊ฐ ๋ค์ด์ค๋ฉด์ last-child๊ฐ ๊ฐฑ์ ๋๋ค. ์ฆ, ์๋ ๊ด์ฐฐํ๋
last-child
๋ ๋ ์ด์ ๋ง์ง๋ง ์์๊ฐ ์๋๋ฏ๋ก ๊ด์ฐฐ์ ์ค์งํ๊ณ ์๋ก์ดlast-child
๋ฅผ ๊ด์ฐฐ ๋์์ผ๋ก ์ค์ ํ๊ณ ๋ค์ ๋ง์ง๋ง ์์๊ฐ ๋ฃจํธ ์์๋ก ๋ค์ด์ค๋ฉด ์ ์์๋ฅผ ๋ง๋ค์ด์ ๊ด์ฐฐ ๋์์ ๊ฐฑ์ ํ๋ ๊ฒ์ ๋ฐ๋ณตํ๋ค. 2๏ธโฃ ๋ชฉ๋ก ์์ ํ๋จ์ ๊ด์ฐฐ์ ์ํ ๋์์ ๋ฏธ๋ฆฌ ์ ์ํ๋ ค๋ฉด ul ํ๊ทธ ๋ฐ๋ก ๋ค์์ ์์์ ์์๋ฅผ ์์ฑํ๊ณ ์ด ์์๊ฐ ๋ฃจํธ ์์ ๋ด๋ก ๋ค์ด์ค๋์ง ๊ณ์ ๊ด์ฐฐํ๋ค. ul์
last-child
๊ฐ ๋ฃจํธ ์์ ๋ด๋ก ๋ค์ด์ค๊ฒ ๋๋ฉด ๋ฐ๋ก ์๋์ ์์นํ ๊ด์ฐฐ ๋์๋ ๋ค์ด์ค๊ฒ ๋๋ฏ๋ก ๋ชฉ๋ก์ด ๊ฐฑ์ ๋๋ค.๐ ์ฐธ๊ณ
๋ฐ๋๋ผ JS๋ก ๋ฌดํ์คํฌ๋กค ๊ตฌํ์ ์ํ ๋ฒ ์ด์ง ๊ณต๋ถ
์ค๋ฌด์์ ๋๋ ์ ์ ๊ณ๋ค์ธ Intersection Observer API ์ ๋ฆฌ
- ์๋ ์ฐธ๊ณ ํ ํฌ์คํธ๋ ๋ชจ๋
๐ ๋ด์ผ์ ์ด๋ป๊ฒ ํด๋ณด๊ณ ์ถ์ผ์ธ์?
- ํ๋ก๊ทธ๋๋จธ์ค ์ธ์ฌ ์ ๋ณด SPA ๋ฆฌ๋ด์ผ ๊ณผ์ ํ ์คํธ ๋ค์ ํ์ด๋ณด๊ธฐ
- ๊ทธ ์ธ ํ๋ก๊ทธ๋๋จธ์ค์์ ์ ๊ณตํ๋ ๊ณผ์ ํ ์คํธ ํ์ด๋ณด๊ธฐ