์์๋ง๋ Observer Pattern์๋ ๋ฌธ์ ์ ์ด์๋ค. ๋ง์ฝ 10๋ช ์ ๊ตฌ๋ ์๊ฐ 100๊ฐ์ ์ ๋ฌธ์ฌ๋ฅผ ๊ตฌ๋ ํ๋ค๊ณ ํ์ ๊ฒฝ์ฐ, ๊ตฌ๋ ๊ด๋ จ ์ฝ๋๊ฐ ๊ธฐํ๊ธ์์ ์ผ๋ก ๋์ด๋ ๊ฒ์ด๋ค.
์์ ์์ฑํ ์ฝ๋๋ฅผ ๋ฆฌํฉํ ๋ง ํด๋ณด์.
-
์ฝ๋๋ฅผ ๋ฆฌํฉํ ๋ง ํ DOM์ ์ ์ฉํด๋ณด์.
-
๊ตฌ์กฐํ๋ฅผ ํด๋ณด์
-
๊ณ ๋ฏผํด๋ณด์
Component ๋ด๋ถ์์ ๊ด๋ฆฌ๋๋ State์ observable์ ์์ ์ฌ์ฉํ ๊ฒฝ์ฐ ๋ง๋ค ๊ฒฝ์ฐ setState๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ์์ด๋ ํฌ๊ฒ ๋ค๋ฅด์ง ์๋ค๊ณ ๋๋ ์ ์๋ค. setState ๋ํ state๊ฐ ๋ณ๊ฒฝ๋ ๋ ๋ง๋ค render๋ฅผ ์คํํ๋ ๋ฐฉ์์ด๊ธฐ ๋๋ฌธ์ด๋ค.
observer๋ ์ปดํฌ๋ํธ ์ํ์ ์ฌ์ฉํ๊ธฐ ๋ณด๋ค๋์ค์ ์ง์ค์ ์ ์ฅ์๋ฅผ ๊ด๋ฆฌํ ๋ ๋งค์ฐ ํจ๊ณผ์ ์ด๋ค. -
์ปดํฌ๋ํธ ์ธ๋ถ์ ์ํ๋ฅผ ๋ง๋ค์ด ์ฃผ๊ธฐ
Vuex๋ Redux ๊ฐ์ ํ๋ ์์ํฌ๋ฅผ ์ฌ์ฉํ๊ธฐ ์ ์, ๋งค์ฐ ๊ฐ๋จํ๊ฒ Store๋ฅผ ๋ง๋ค์ด ๊ด๋ฆฌํด๋ณด์.
-
์ต์ ํ
-
์ํ๊ฐ ๋ณ๊ฒฝ๋์ด render๋ฅผ ํด์ผํ๋๋ฐ, ๋ง์ฝ ๋ณ๊ฒฝ๋ ์ํ๊ฐ ์ด์ ์ํ์ ๊ฐ์ด ๊ฐ์๊ฒฝ์ฐ ๋ค์ ๋ ๋๋ง ๋์ง ์๋๋ก ๋ฐฉ์ด๋ก์ง์ ์์ฑํ์.
-
์ํ๊ฐ ์ฐ์์ผ๋ก ๋ณ๊ฒฝ๋๋ ๊ฒฝ์ฐ DOM์ผ๋ก ๋ ๋๋ง ๋๋ ๊ฒฝ์ฐ
requestAnimationFrame๊ณผdebounce๋ฅผ ์ด์ฉํ์ฌ ํ ํ๋ ์์ ํ ๋ฒ๋ง ๋ ๋๋ง๋๋๋ก ๋ง๋ค์ด์ค์ผํ๋ค.
requestAnimationFrame
MDN ๋ฌธ์ (opens new window)์ ๋์์๋ ๋ด์ฉ์ ๋ค์๊ณผ ๊ฐ๋ค.
๋ธ๋ผ์ฐ์ ์๊ฒ ์ํํ๊ธฐ๋ฅผ ์ํ๋ ์ ๋๋ฉ์ด์ ์ ์๋ฆฌ๊ณ ๋ค์ ๋ฆฌํ์ธํธ๊ฐ ์งํ๋๊ธฐ ์ ์ ํด๋น ์ ๋๋ฉ์ด์ ์ ์ ๋ฐ์ดํธํ๋ ํจ์๋ฅผ ํธ์ถํ๊ฒ ํฉ๋๋ค. ์ด ๋ฉ์๋๋ ๋ฆฌํ์ธํธ ์ด์ ์ ์คํํ ์ฝ๋ฐฑ์ ์ธ์๋ก ๋ฐ์ต๋๋ค.
ํ๋ฉด์ ์๋ก์ด ์ ๋๋ฉ์ด์ ์ ์ ๋ฐ์ดํธํ ์ค๋น๊ฐ ๋ ๋๋ง๋ค ์ด ๋ฉ์๋๋ฅผ ํธ์ถํ๋๊ฒ์ด ์ข์ต๋๋ค. ์ฝ๋ฐฑ์ ์๋ ๋ณดํต 1์ด์ 60ํ์ง๋ง, ์ผ๋ฐ์ ์ผ๋ก ๋๋ถ๋ถ์ ๋ธ๋ผ์ฐ์ ์์๋ W3C ๊ถ์ฅ์ฌํญ์ ๋ฐ๋ผ ๊ทธ ์๊ฐ ๋์คํ๋ ์ด ์ฃผ์ฌ์จ๊ณผ ์ผ์นํ๊ฒ๋ฉ๋๋ค.
์ฝ๊ฒ ๋งํด์ requestAnimationFrame์ 1ํ๋ ์์ 1ํ ํธ์ถ๋๋ค. ๋ณดํต 1์ด์ 60ํ๋ ์์ด๊ณ , 1ํ๋ ์์ ์ฝ 16ms ์ ๋ ๋๋ค.
-
-
Proxy
- ์ฌ์ค Object.defineProperty๋ IE๋ฅผ ์ง์ํ๊ธฐ ์ํด ์ฌ์ฉํ๋ API์ด๋ค. ์ต์ ๋ธ๋ผ์ฐ์ ์์๋ Proxy (opens new window)๋ฅผ ์ด์ฉํ๋ค๋ฉด ๋ ์ฝ๊ฒ Observable์ ๋ง๋ค ์ ์๋ค.
์๋นํ ์ด๋ ต๋ค.. ์ดํดํ๋๋ฐ ์๊ฐ์ด ํ์ํ์ผ๋ฉฐ ๋์์๋ฉด ๊ธ๋ฐฉ ์์ด๋ฒ๋ฆด์ ์์ผ๋ ๋ฐ๋ณต์ ์ผ๋ก ํ์ตํ๋๋ก ํด์ผ๊ฒ ๋ค.
์ฐธ์กฐ :