CHAPTER 16. Zones and the Angular magic
Intro
AngularJS 1.X๋ก ๊ฐ๋ฐํ๋ฉด "๋ง์ "๋๋์ด ์๊ธฐ๊ณ Angular 2๋ ์ฌ์ ํ ๋์ผํ ํจ๊ณผ๋ฅผ ์ค๋ค. ์ ๋ ฅ์ ๊ฐ์ ์ ๋ ฅํ๋ฉด ๋ชจ๋ ๊ฒ์ด ๋ง์ ์ฒ๋ผ ์ ๋ฐ์ดํธ ๋๋ค.
๋๋ ๋ง์ ์ ์ข์ํ์ง๋ง, ๋๋ ๋ด๊ฐ ์ฌ์ฉํ๋ ๋๊ตฌ๋ก ์ด๋ค ์ผ์ด ๋ฒ์ด์ง๊ณ ์๋์ง ์ดํดํ๋ ๊ฒ์ ์ ํธํ๋ค. ๋น์ ์ด ๋๋ฅผ ์ข์ํ๋ค๋ฉด,์ด ๋ถ๋ถ์ด ๋น์ ์๊ฒ๋ ํฅ๋ฏธ๋ก์ธ ๊ฒ์ด๋ผ๊ณ ์๊ฐํ๋ค. ์ฐ๋ฆฌ๋ Angular 2๊ฐ ์ด๋ป๊ฒ ์๋ํ๋์ง ๋ณด๊ฒ ๋ ๊ฒ์ด๋ค! ๊ทธ๋ฌ๋ AngularJS 1.x๊ฐ ์ด๋ป๊ฒ ์๋ํ๋์ง ๋จผ์ ์ดํด ๋ณด๋๋ก ํ์. AngularJS 1.x๋ ์ฌ์ฉํ์ง ์์๋ ์ฌ๋ฏธ์์ ๊ฒ์ด๋ค.
๋ชจ๋ JavaScript ํ๋ ์ ์ํฌ๋ ๋๋ต ๋์ผํ ๋ฐฉ์์ผ๋ก ์๋ํ๋ค. ๊ฐ๋ฐ์๋ ์์ฉ ํ๋ก๊ทธ๋จ ์ด๋ฒคํธ์ ์๋ตํ๊ณ ์์ฉ ํ๋ก๊ทธ๋จ ์ํ๋ฅผ ์ ๋ฐ์ดํธํ๊ณ ์ด์ ๋ฐ๋ผ DOM์ ์๋ก ๊ณ ์น ์ ์๋ค. ๊ทธ๋ฌ๋ ๊ทธ๋ค์ ๋ชจ๋ ๊ทธ ๋ชฉํ๋ฅผ ๋ฌ์ฑํ๋ ๋ฐ ๊ฐ์ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ์ง๋ ์๋๋ค. ์๋ฅผ ๋ค์ด, EmberJS๋ ๊ฐ๋ฐ์์๊ฒ setter๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ์ฒด์ ์ํ๋ฅผ ๋ณ๊ฒฝํ์ฌ ํ๋ ์ ์ํฌ์์ ์ด๋ฌํ setter์ ๋ํ ํธ์ถ์ ๊ฐ๋ก ์ฑ๊ธฐ๋ฅผ ์์ฒญ ํ๋ค. ์ด๊ฒ์ด ๋ชจ๋ธ์ ์ ์ฉ๋ ๋ณ๊ฒฝ ์ฌํญ์ ํ์ ํ๊ณ ์ด์ ๋ฐ๋ผ DOM์ ์ ๋ฐ์ดํธ ํ ์์๊ฒ ํด์ค๋ค.
๋ฐ๋ฉด, React๋ ๋ณ๊ฒฝ ๋ ๋๋ง๋ค DOM์ ๋ค์ ๊ณ์ฐํ๊ธฐ๋ก ํ์๋ค. ๊ทธ๋ฌ๋ ์ ์ฒด DOM์ ์์ ํ๋ ๊ฒ์ ๋น์ฉ์ด ๋ง์ด ๋๋ ์์ ์ด๊ธฐ ๋๋ฌธ์ ๊ฐ์ DOM์ ๋ณ๊ฒฝ ์ฌํญ์ ์ ์ฉํ ๋ค์ ๊ฐ์ DOM๊ณผ ์ค์ DOM๊ฐ์ ๋ณ๊ฒฝ ์ฌํญ์ ์ ์ฉํ๊ธฐ ๋งํ๋ฉด ๋๋ค. Angular๋ setter๋ฅผ ์ฌ์ฉํ์ง ์์ผ๋ฉฐ ๊ฐ์ DOM๋ ์ฌ์ฉํ์ง ์๋๋ค. ๊ทธ๋ฌ๋ฉด DOM์์ ๋ฌด์์ ๋ณ๊ฒฝํด์ผํ๋์ง ์ด๋ป๊ฒ ์ ์ ์์๊น?
์ฒซ ๋ฒ์งธ ๋จ๊ณ๋ ๋ชจ๋ธ์ ๋ณ๊ฒฝ ์ฌํญ์ ๊ฐ์งํ๋ ๊ฒ์ด๋ค. ๋ณ๊ฒฝ์ ์ฌ์ฉ์๊ฐ ์ง์ ๋๋ "์์คํ " ์ด๋ฒคํธ (HTTP ์๋ต, ์๊ฐ ์ด๊ณผ ํ ๋น๋๊ธฐ ๋ฉ์๋ ์คํ ๋ฑ) ์์ ์ค๋ ์ด๋ฒคํธ์ ์ํด ํญ์ ํธ๋ฆฌ๊ฑฐ ๋๋ค.
๊ทธ๋ ๋ค๋ฉด AngularJS 1.x๋ ์ด๋ค ์ฌ๊ฑด์ด ๋ฐ์ํ๋์ง ์ด๋ป๊ฒ ์ ์ ์์๊น? ์ด ๋ถ๋ถ์ ์ค์ ๋ก ๋งค์ฐ ๊ฐ๋จํ๋ค. ์๋ฅผ ๋ค์ด ng-click์ ํด๋ฆญ ์ด๋ฒคํธ์ ๋ฐ์ ์ํค๊ฑฐ๋ ng-model์ ์ฌ์ฉํ์ฌ ์ ๋ ฅ์ ๋ํ ๋ณ๊ฒฝ ์ฌํญ์ ๊ด์ฐฐํ๋ ๋ฑ์ ์ง์๋ฌธ์ ์ฌ์ฉํด์ผ ํ๋ค. ๋ํ ์๋น์ค๋ฅผ ์ฌ์ฉํ๋๋ก ๊ฐ์ํ๋ค. (์ : HTTP ์์ฒญ์ ๊ฒฝ์ฐ http http ๋๋ ๋น๋๊ธฐ ์ ์ผ๋ก ์์ ์ ์คํํ๋ $ timeout).
์ด๋ฌํ ์ง์๋ฌธ๊ณผ ์๋น์ค๋ฅผ ์ฌ์ฉํ๋ฉด ํ๋ ์ ์ํฌ์์ ๋ฐ์ํ ๋ชจ๋ ์ด๋ฒคํธ์ ๋ํ ์ ๋ณด๋ฅผ ์ป์ ์ ์๋ค. ๊ทธ๊ฒ์ ๋ง์ ์ ์ฒซ ๋ฒ์งธ ๋ถ๋ถ์ด๋ค! ๊ทธ๋ฆฌ๊ณ ์ด๊ฒ์ ๋ ๋ฒ์งธ ๋ถ๋ถ์ ํธ๋ฆฌ๊ฑฐํ๋ ์ฒซ ๋ฒ์งธ ๋ถ๋ถ ์ด๋ค. ํ๋ ์ ์ํฌ๋ ์ด์ DOM์ ์ด๋ ๋ถ๋ถ์ ์ ๋ฐ์ดํธ ํด์ผ ํ๋์ง (๋ฐ ๊ทธ ๋ฐฉ๋ฒ) ๊ฒฐ์ ํ๊ธฐ ์ํด ๋ชจ๋ธ์ ๋ํ ๋ณ๊ฒฝ ์ฌํญ์ ๋ถ์ํด์ผ ํ๋ค.
์ด๋ฅผ ์ํด ๋ฒ์ 1.x์์ ํ๋ ์ ์ํฌ๋ ๊ด์ฐฐ์ ๋ชฉ๋ก์ ์ ์ง ๊ด๋ฆฌํ๋ฉฐ ๋ชจ๋ธ์ ํน์ ๋ถ๋ถ์์ ๋ณ๊ฒฝ ์ฌํญ์ ๊ด์ฐฐํ๊ณ ์ด์ ๋์ํ๋ค. ๋จ์ํ ํ๊ธฐ ์ํด HTML ํ ํ๋ฆฟ์ ์ฌ์ฉ ๋ ๋ชจ๋ ๋์ ํํ์์ ๋ํด ๊ด์ฐฐ์๊ฐ ๋ง๋ค์ด์ง๋ค. ์ด๋ก ์ธํด ํ ํ์ด์ง์ ์๋ฐฑ ๋ช ์ ๊ด์ฐฐ์๊ฐ ์๊ธธ ์ ์๋ค. ์ด๋ฌํ ๊ด์ฐฐ์๋ AngularJS 1.x์ ํต์ฌ์ด๋ค. ์ด๋ค์ ํ๋ ์ ์ํฌ์ ๋ฉ๋ชจ๋ฆฌ์ด๋ฉฐ ์ฑ์ ์ํ๋ฅผ ๊ธฐ์ตํ๊ธฐ ์ํด ์๋ค.
ํ๋ ์ ์ํฌ๊ฐ ์ด๋ฒคํธ๋ฅผ ๊ฐ์ง ํ ๋๋ง๋ค (์ฌ์ฉ์๊ฐ ng ๋ชจ๋ธ, HTTP ์๋ต, ์๊ฐ ์ด๊ณผ ์คํ ๋ฑ์ผ๋ก ์ ๋ ฅ์์ ๋ฌด์ธ๊ฐ๋ฅผ ์ ๋ ฅํ๋ ๊ฒฝ์ฐ) ๋ค์ด์ ์คํธ์ฃผ๊ธฐ๋ฅผ ํธ๋ฆฌ๊ฑฐ ํ๋ค. ์ด ๋ค์ด์ ์คํธ์ฃผ๊ธฐ๋ ๊ด์ฐฐ์์ ์ ์ฅ๋ ๋ชจ๋ ํํ์์ ํ๊ฐํ๊ณ ์ ๊ฐ๊ณผ ์ด์ ๊ฐ์ ๋น๊ต ํ๋ค. ๋ณ๊ฒฝ ์ฌํญ์ด ์๋ ๊ฒฝ์ฐ ํ๋ ์ ์ํฌ๋ DOM์ ์ ๋ฐ์ดํธํด์ผ ํ๋ค๋ ๊ฒ์ ์๊ณ ์๊ธฐ ๋๋ฌธ์ UI๊ฐ ์ด์ ๊ฐ ๋์ ์ ๊ฐ์ ํ์ํ๋ค. ์ด ๊ธฐ์ ์ ๋ํฐ ๊ฒ์ฌ๋ผ๊ณ ํ๋ค.
์ด ๋ค์ด์ ์คํธ์ฃผ๊ธฐ ๋์ Angular๋ ๋ชจ๋ ๊ด์ฐฐ์ ๋ชฉ๋ก์ ๊ฒํ ํ๊ณ ๋ชจ๋ ๊ฐ์ ์์ ํ๊ฐํ๋ค. ๊ทธ๋ฌ๋ ๊ฒฐ๊ณผ๊ฐ ์์ ๋ ๋๊น์ง ์ฆ, ๋ชจ๋ ์ ๊ฐ์ด ์ด์ ๊ฐ๊ณผ ๊ฐ์ ์ง ๋๊น์ง์ด ์ ์ฒด์ฃผ๊ธฐ๋ฅผ ๋ค์ ์คํ ํ๋ค. ์ ๊ทธ๋ด๊น? ๊ฐ์ ๋ ํํ์์ ๊ฐ์์ ๋ณ๊ฒฝ์ด ๊ฐ์ง ๋ ๋๋ง๋ค ์ฝ๋ฐฑ ํจ์๊ฐ ํธ์ถ๋๊ธฐ ๋๋ฌธ์ ์ด ์ฝ๋ฐฑ ํจ์๋ ๋ชจ๋ธ์ ์์ ํ์ฌ ํ๋ ๋๋ ์ฌ๋ฌ ๊ฐ์ ๋ค๋ฅธ ๊ฐ์ ์์ ๊ฐ์ ๋ณ๊ฒฝํ ์ ์๋ค!
AngularJS 1.x and the digest cycle
์ต์ํ์ ์๋ฅผ ๋ค์ด ๋ณด์. ์ฌ์ฉ์๊ฐ ์ฑ์์ผ ํ๋ ๋ ๊ฐ์ ํ๋ (์ด๋ฆ๊ณผ ๋น๋ฐ๋ฒํธ)๊ฐ์๋ ํ์ด์ง ์ด๋ค. ํ์ด์ง์ ๋น๋ฐ๋ฒํธ ๊ฐ๋ ํ์๊ธฐ๊ฐ ํ์๋๋ค๊ณ ๊ฐ์ ํด ๋ณด์. watcher๋ ์ํธ ๊ฐ์๋ณด๊ธฐ ์ํด ์ฌ์ฉ๋๋ฉฐ ๋ณ๊ฒฝ ๋ ๋๋ง๋ค ๊ฐ๋๋ฅผ ๋ค์ ๊ณ์ฐํ๋ค. ๋ค์ด์ ์คํธ์ฃผ๊ธฐ์ ์ฒซ ๋ฒ์งธ ๋ฐ๋ณต ํ ์ฌ์ฉ์๊ฐ ๋น๋ฐ๋ฒํธ์ ์ฒซ ๊ธ์๋ฅผ ์ ๋ ฅํ๋ฉด ์ฐ๋ฆฌ๋ ์ด ๊ด์ฐฐ์ ๋ชฉ๋ก์ ๊ฐ๊ฒ๋๋ค.
๊ทธ๋ฐ ๋ค์ user.password ํํ์์ ๊ด์ฐฐํ๋ ๊ด์ฐฐ์์ ์ฝ๋ฐฑ ํจ์๊ฐ ํธ์ถ๋๊ณ ์ ์ํธ ๊ฐ๋๊ฐ ๊ณ์ฐ๋๋ค. Angular๋ ๋ชจ๋ธ์์ ์ํ ๋ ๋ณ๊ฒฝ ์ฌํญ์ ์์ง ๋ชปํ๋ฏ๋ก ๋ชจ๋ธ์ด ์์ ์ ์ธ์ง ์์๋ณด๊ธฐ ์ํด ๋ ๋ฒ์งธ ๋ค์ด์ ์คํธ ๋ฐ๋ณต์ ์์ ํ๋ค.
๋ชจ๋ธ์ด ์์ ์ ์ด์ง ์๋๋ค. ์ฒซ ๋ฒ์งธ ๋ฐ๋ณต ์ดํ passwordStrength์ ๊ฐ์ด ๋ณ๊ฒฝ๋์๋ค. ๊ทธ๋์ ๋ค๋ฅธ ๋ค์ด์ ์คํธ ๋ฐ๋ณต์ ์์ํ๋ค.
์ด๋ฒ์๋ ๋ชจ๋ธ์ด ์์ ์ ์ด๋ค. AngularJS 1.x๊ฐ ๊ฒฐ๊ณผ๋ฅผ DOM์ ํ๋ฌ์ํ๋ ๊ฒ์ ๊ทธ ๋น์ ๋ฟ์ด๋ค. ๋ฐ๋ผ์ ๋ค์ด์ ์คํธ์ฃผ๊ธฐ๋ ์์ฉ ํ๋ก๊ทธ๋จ์ด ๋ณ๊ฒฝ ๋ ๋๋ง๋ค ์ต์ 2 ํ ๋ฐ์ ํ๋ค. ๋ค์ด์ ์คํธ๋ ์ต๋ 10 ํ๊น์ง ๋ฐ๋ณต ํ ์ ์์ง๋ง ๋ ์ด์ ๋ฐ๋ณตํ์ง ์๋๋ค. ๊ฒฐ๊ณผ๊ฐ ์์ ์ ์ด์ง ์์ผ๋ฉด 10 ํ ๋ฐ๋ณต ํ ํ๋ ์ ์ํฌ๋ ๋ฌดํ ๋ฃจํ๊ฐ ์๋ค๊ณ ํ๋จํ๊ณ ์์ธ๋ฅผ throwํ๋ค.
๊ทธ๋์ ๋ด ์์ ๋๋ก์์ ํจ์ฌ ๋ ์ข์ ๋ณด์ธ๋ค. ์ด๊ฒ์ ๊ฐ ์ฌ๊ฑด ํ์ ๊ณ์๋๊ณ ์๋ค. ์ฆ, ์ฌ์ฉ์๊ฐ ์ํธ ํ๋์ 5์๋ฅผ ์ ๋ ฅํ๋ฉด ๋ค์ด์ ์คํธ์ฃผ๊ธฐ๊ฐ 5 ๋ฒ ์คํ๋๋ฉฐ ๋งค๋ฒ 3 ๋ฒ ๋ฐ๋ณต๋๋ฏ๋ก ์ด 15 ๋ฒ์ ๋ฐ๋ณต์ด ๋ฐ์ํ๋ค.
์ค์ ์์ฉ ํ๋ก๊ทธ๋จ์์๋ ์๋ฐฑ ๋ช ์ ๊ด์ฐฐ์๊ฐ ์์ ์ ์์ผ๋ฏ๋ก ๋ชจ๋ ์ด๋ฒคํธ ํ์ ์์ฒ ๊ฐ์ ํํ ํ๊ฐ๊ฐ ๊ฐ๋ฅํ๋ค. ์ต์ ๋ธ๋ผ์ฐ์ ๋ ๋งค์ฐ ๋น ๋ฅด๋ฉฐ ํ์ํ ๊ฒฝ์ฐ ๋ช ๊ฐ์ง ์ฌํญ์ ์ต์ ํ ํ ์์๋ ๋ฐฉ๋ฒ์ด ์์ผ๋ฏ๋ก ์ ๋์ํ ๊ฒ์ด๋ค.
AngularJS 1.x์ ๋ํ ๋ ๊ฐ์ง ์ค์ํ ์์ ์ ๋ค์ ์ ๋ฆฌํด ๋ณด์. โข ๋ชจ๋ธ์ ๋ณ๊ฒฝํ ์์๋ ๋ชจ๋ ๊ฒ์ ๋ํด ํ๋ ์ ์ํฌ์ ์๋น์ค์ ์ง์๋ฌธ์ ์ฌ์ฉํด์ผ ํ๋ค. โข Angular๋ก ์ฒ๋ฆฌ๋์ง ์๋ ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ ํ์ ๋ชจ๋ธ์ ์์ ํ๋ ๊ฒ์ด ๊ฐ๋ฅํ์ง๋ง (๋ค์ด์ ์คํธ์ฃผ๊ธฐ๋ฅผ ์์ํ๋ ์ ๋ช ํ $ scope. $ apply () ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ) ๊ฐ์ง ๋ณ๊ฒฝ ๋ฉ์ปค๋์ฆ์ ๋ช ์ ์ ์ผ๋ก ํธ๋ฆฌ๊ฑฐ ํด์ผ ํใท. ์๋ฅผ ๋ค์ด $ http ์๋น์ค๋ฅผ ์ฌ์ฉํ์ง ์๊ณ HTTP ์์ฒญ์ ๋ณด๋ด๋ ค๋ฉด ์๋ต ์ฝ๋ฐฑ์์ $ scope. $ apply ()๋ฅผ ํธ์ถํ์ฌ ํ๋ ์ ์ํฌ์ "์ด๋ด, ๋ชจ๋ธ์ ์ ๊ฐ์ ์ ์ฅ ํ์ผ๋, ๋ค์ด์ ์คํธ ์ฌ์ดํด์ ์์ ํ๊ฒ ๋๊ฐ?
ํ๋ ์ ์ํฌ์ ๋ง๋ฒ์ ๋ ๋ถ๋ถ์ผ๋ก ๋๋ ์ ์๋ค. โข ๊ฐ ์ด๋ฒคํธ๊ฐ ๋๋๋ฉด ๋ณ๊ฒฝ ๊ฐ์ง๋ฅผ ํธ๋ฆฌ๊ฑฐ ํ๋ค. โข ๊ฐ์์ ๋ฐ ๋ค์ด์ ์คํธ์ฃผ๊ธฐ ๋๋ถ์ ๋ณ๊ฒฝ ๊ฐ์ง ํ๋ค. ์ด์ Angular 2๊ฐ ์๋ํ๋ ๋ฐฉ์๊ณผ AngularJS์๋ ๋ค๋ฅธ ์ ์ ์ดํด ๋ณด์.
Angular 2 and zones
Angular 2๋ ๋์ผํ ์์น์ ๊ธฐ๋ฐ์ผ๋กํ์ง๋ง ๋ค๋ฅธ ๋ฐฉ์์ผ๋ก ๊ตฌํ ๋๋ค. ์ฐ๋ฆฌ๋ ๋ ๋๋ํ ๋ฐฉ๋ฒ์ผ๋ก ๋งํ ์๋ ์๋ค.
Angular ํ์ ๋ฌธ์ ์ ์ฒซ ๋ฒ์งธ ๋ถ๋ถ ์ธ ๋ณ๊ฒฝ ๊ฐ์ง๋ฅผ ํธ๋ฆฌ๊ฑฐํ๊ธฐ ์ํด Zone.js๋ผ๋ ์์ ์ฌ์ด๋ ํ๋ก์ ํธ๋ฅผ ๊ตฌ์ถํ๋ค. ์ด ํ๋ก์ ํธ๋ ์์ญ์ด ๋ค๋ฅธ ํ๋ก์ ํธ์์ ์ ์ฉ ํ ์์๋ ๋๊ตฌ์ด๊ธฐ ๋๋ฌธ์ Angular์ ๋ฌถ์ฌ ์์ง ์๋๋ค. ์์ญ์ ์ ํ ์๋ก์ด ๊ฐ๋ ์ด ์๋๋ค. Dart ์ธ์ด (๋ค๋ฅธ Google ํ๋ก์ ํธ)์ ์ด๋ฏธ ์๋น ๋ถ๋ถ ์กด์ฌํ๋ค. ๊ทธ๊ฒ๋ค์ ๋ํ Node.js (ํ์ฌ ๋ฒ๋ ค์ง)์ Domains ๋๋ java์ ThreadLocals์ ์ ์ฌํ๋ค.
Zones
์์ญ์ ์คํ ์ปจํ ์คํธ์ด๋ค. ์ด ์ปจํ ์คํธ๋ ์คํํ ์ฝ๋๋ฅผ ์์ ํ์ผ๋ฉฐ ์ด ์ฝ๋๋ ๋๊ธฐ์ ๋๋ ๋น๋๊ธฐ์์ด ๋ ์ ์๋ค. ์์ญ์ ๋ช ๊ฐ์ง ์ด์ ์ ์ ๊ณตํ๋ค.
โข ์คํํ๊ธฐ ์ ํ์ ์คํ๋ ์์๋ ํํฌ โข ์คํํ ์ฝ๋์ ์ ์ฌ์ ์ธ ์ค๋ฅ๋ฅผ ๊ฐ๋ก ์ฑ๊ธฐ์ํ ๋ฐฉ๋ฒ โข ์ด ์ปจํ ์คํธ์ ๋ฐ์ธ๋ฉ ๋ ๋ณ์๋ฅผ ์ ์ฅํ๋ ๋ฐฉ๋ฒ
์๋ฅผ ๋ค์ด ๋ณด์. ๋ด ์์ฉ ํ๋ก๊ทธ๋จ์ ๋ค์ ์ฝ๋๊ฐ ์๋ค๊ณ ๊ฐ์ ํ์
์ด ์ฝ๋๋ฅผ ์คํํ๋ฉด ๋ค์์ ์ป์ ์ ์๋ค.
์ด์ ๋ ํด๋น ์ฝ๋๋ฅผ ์คํํ๋ ๋ฐ ์์ ๋ ์๊ฐ์ ์ธก์ ํ๋ ค๊ณ ํ๋ค๊ณ ๊ฐ์ ํ์.
๊ทธ๋ฆฌ๊ณ ๊ทธ ๊ฒฐ๊ณผ๋ ๋ค์๊ณผ ๊ฐ๋ค.
์ด์ updatePlayer๊ฐ ๋น๋๊ธฐ ํจ์ ์ธ ๊ฒฝ์ฐ ์ด๋ป๊ฒ ๋ ๊น? JavaScript๋ ์์ฃผ ํน๋ณํ ๋ฐฉ์์ผ๋ก ๋์ํ๋ค. ๋น๋๊ธฐ ์์ ์ ์คํ ํ์ ๋์ ๋ฐฐ์น๋๋ฏ๋ก ๋๊ธฐ ์์ ํ์ ์คํ ๋๋ค.
๋ด ์คํ ์๊ฐ์ ๋ ์ด์ ์ฌ๋ฐ๋ฅด์ง ์๋๋ค : ๊ทธ๊ฒ์ ์ฝ๋์์ ๋๊ธฐํ ์์ ์ด ์ํ ํ ์๊ฐ ๋ง ์ธก์ ํ๊ณ ์์๋ถํฐ ์ ์ ์ ๋ฐ์ดํธ๊ฐ ๋๋ ์๊ฐ์ ์ธก์ ํ์ง ์๋๋ค! ๊ทธ๊ฒ์ด ์์ญ์ด ์ ์ฉ ํ ์์๋ ๊ณณ์ด๋ค. ์ ์ฉ ์คํ ์ปจํ ์คํธ์์ ์ฝ๋๋ฅผ ์คํํ๋ค.
์ ์ด๊ฒ์ด ๋์์ด ๋ ๊น? zone.js ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ๋ธ๋ผ์ฐ์ ์ ์ํด๋ก๋๋๋ฉด ์๋ฐ ์คํฌ๋ฆฝํธ ๋ฐํ์์์ ๋ชจ๋ ๋น๋๊ธฐ ํจ์์ ํจ์น๋ฅผ ์ ์ฉํ์ฌ ์์ํ๋ค. ๋ฐ๋ผ์ setTimeout () ๋๋ setInterval ()์ ์ฌ์ฉํ ๋๋ง๋ค ๋๋ Promises, XMLHttpRequest, WebSocket, FileReader, GeoLocation ๋ฑ๊ณผ ๊ฐ์ ๋น๋๊ธฐ API๋ฅผ ์ฌ์ฉํ ๋๋ง๋ค ์ฐ๋ฆฌ๋ ์ค์ ๋ก zone.js์ ํจ์น ๋ฒ์ ์ ํธ์ถ ํ๋ค. ๋ฐ๋ผ์ Zone.js๋ ๋น๋๊ธฐ ์์ ์ด ์๋ฃ๋ ์์ ์ ์๊ณ ๊ฐ๋ฐ์๊ฐ ํด๋น ์์ ์ ์ผ๋ถ ํํฌ๋ฅผ ์คํํ ์ ์๋ค.
์์ญ์ ์ฌ๋ฌ ๊ฐ์ง ๊ณ ๋ฆฌ๋ฅผ ์ ๊ณตํ๋ค. โข onInvoke๋ ์์ญ์์ ๋ํ ๋ ์ฝ๋๋ฅผ ์คํํ๊ธฐ ์ ์ ํธ์ถ๋๋ค. โข onHasTask๋ ์์ญ์์ ๋ฉํ ๋ ์ฝ๋๊ฐ ์คํ์ ๋ง์น ํ์ ํธ์ถ๋๋ค. โข onHandleError๋ ์์ญ์์ ๋ํ ๋ ์ฝ๋๊ฐ ์์ธ๋ฅผ throw ํ ๋ ํธ์ถ๋๋ค. โข onFork์ ์์ญ์ด ๋ง๋ค์ด ์ง ๋ ํธ์ถ๋๋ค.
๋ฐ๋ผ์ ์ฐ๋ฆฌ๋ ์กด๊ณผ ๊ทธ ํํฌ๋ฅผ ์ฌ์ฉํ์ฌ ๋น๋๊ธฐ ์์ ์ ์์๋ถํฐ ๋๊น์ง ์์ ๋ ์ ์ฒด ์๊ฐ์ ์ธก์ ํ ์ ์๋ค.
๊ทธ๋ฆฌ๊ณ ์ด๋ฒ์๋ ๊ฒฐ๊ณผ๊ฐ ์ ํํ๋ค!
์ด์ Angular 2๊ฐ ์ด ๋ฉ์ปค๋์ฆ์ ์ด์ ์ ๋๋ฆด ์์๋ ๋ฐฉ๋ฒ์ ์ถ์ธก ํ ์ ์๋ค. ์ค์ ๋ก ํ๋ ์ ์ํฌ์ ์ฒซ ๋ฒ์งธ ๋ฌธ์ ๋ ๋ณ๊ฒฝ ๊ฐ์ง๊ฐ ํธ๋ฆฌ๊ฑฐ ๋์ด์ผ ํ๋ ์๊ธฐ๋ฅผ ํ์ ํ๋ ๊ฒ์ด๋ค. ์์ญ์ ์ฌ์ฉํ๊ณ ์์ญ์์ ์์ฑํ ์ฝ๋๋ฅผ ์คํํ๋ฉด ํ๋ ์ ์ํฌ์์ ์ด๋ค ์ผ์ด ์ผ์ด๋๊ณ ์๋์ง ์ ๋ณผ ์ ์๋ค. ๋ ๋์ ๋ฐฉ๋ฒ์ผ๋ก ์ค๋ฅ๋ฅผ ์ฒ๋ฆฌ ํ ์ ์๋ค. ๊ทธ๋ฌ๋ ๋ ์ค์ํ ๊ฒ์ ๋น๋๊ธฐ ์์ ์ด ์๋ฃ ๋ ๋๋ง๋ค ๋ณ๊ฒฝ ๊ฐ์ง๋ฅผ ํธ๋ฆฌ๊ฑฐ ํ ์ ์๋ค๋ ๊ฒ์ด๋ค.
๋จ์ํํ๊ธฐ ์ํด Angular 2๋ ๋ค์๊ณผ ๊ฐ์ด ์ฒ๋ฆฌํ๋ค.
๊ทธ๋ฆฌ๊ณ ์ฒซ ๋ฒ์งธ ๋ฌธ์ ๊ฐ ์ด๋ ๊ฒ ํด๊ฒฐ๋์๋ค! ๊ทธ๋์ Angular 2์์๋ AngularJS 1.x์ ๋ฌ๋ฆฌ ์๋ ๋ณ๊ฒฝ ๊ฐ์ง ๊ธฐ๋ฅ์ ์ฌ์ฉํ๊ธฐ ์ํด ํน๋ณํ ์๋น์ค๋ฅผ ์ฌ์ฉํ ํ์๊ฐ ์๋ค. ์ํ๋ ๊ฒ์ ์ฌ์ฉํ ์ ์์ผ๋ฉฐ ์์ญ์ด ์ด๋ฅผ ์ฒ๋ฆฌํ๋ค.
์์ญ์ ํ์คํ ๊ณผ์ ์ ์์ผ๋ฏ๋ก ๊ณต์์ ์ธ ECMAScript ์ฌ์์ ์ผ๋ถ๊ฐ ๋ ์ ์๋ค. ๋ค๋ฅธ ํฅ๋ฏธ๋ก์ด ์ ๋ณด ์ธ zone.js์ ํ์ฌ ๊ตฌํ์ WTF์ ๋ํ ์ ๋ณด๋ ์ ๊ณตํ๋ค. (์ด ๋ฌธ๋งฅ์์ Web Tracing Framework). ์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ฉด ๊ฐ๋ฐ ๋ชจ๋์์ ์์ฉ ํ๋ก๊ทธ๋จ์ ํ๋กํ์ผ๋งํ๊ณ ์์ฉ ํ๋ก๊ทธ๋จ ๋ฐ ํ๋ ์ ์ํฌ ์ฝ๋์ ๋ชจ๋ ๋ถ๋ถ์์ ์์ ๋ ์๊ฐ์ ์ ํํ ์ ์ ์๋ค. ์์ปจ๋ ํ์ํ ๊ฒฝ์ฐ ์ฑ๋ฅ์ ๋ถ์ํ๊ณ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์์๋ ์ถฉ๋ถํ ์ ๋ณด์ด๋ค.
Change detection in Angular 2
๋ฌธ์ ์ ๋ ๋ฒ์งธ ๋ถ๋ถ์ ๋ณ๊ฒฝ ๊ฐ์ง ์์ฒด์ด๋ค. ์์ ์์ ๋ฐ ๋ฐฉ๋ฒ์ ํ์ ํ๋ ๊ฒ์ด ํ๋์ ๋ฐฉ๋ฒ์ด์ง๋ง ์๋ ์๋ฆฌ๋ฅผ ์๋ ๊ฒ๋ ์ค์ํ๋ค.
์ฐ์ Angular ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ฑ ์์์ ํธ๋ฆฌ๋ผ๋ ๊ฒ์ ๊ธฐ์ตํด์ผ ํ๋ค. ๋ณ๊ฒฝ ๊ฐ์ง๊ฐ ์์๋๋ฉด ํ๋ ์ ์ํฌ๋ ํธ๋ฆฌ์ ๋ชจ๋ ๊ตฌ์ฑ ์์๋ฅผ ๊ฑฐ์ณ ์ํ๊ฐ ๋ณ๊ฒฝ๋์๋์ง, ์ ์ํ๊ฐ ํด๋น๋ณด๊ธฐ์ ์ํฅ์ ์ฃผ๋์ง ํ์ธํ๋ค. ์ด ๊ฒฝ์ฐ ๋ณ๊ฒฝ ์ฌํญ์ ์ํฅ์ ๋ฐ๋ ๊ตฌ์ฑ ์์์ DOM ๋ถ๋ถ์ด ์ ๋ฐ์ดํธ ๋๋ค. ํธ๋ฆฌ ํ์์ ๋ฃจํธ์์ ์์ผ๋ก ์ด๋ํ๋ฉฐ AngularJS 1.x์๋ ๋ฌ๋ฆฌ ํ ๋ฒ๋ง ์ํ๋๋ค.
์ด์ ๋ ํฐ ์ฐจ์ด๊ฐ ์๊ธฐ ๋๋ฌธ์ ๋ณ๊ฒฝ ๊ฐ์ง๋ก Angular 2์ ์์ฉ ํ๋ก๊ทธ๋จ ๋ชจ๋ธ์ด ๋ณ๊ฒฝ๋์ง ์์ง๋ง AngularJS 1.x์ ๊ด์ฐฐ์๋ ํด๋น ๋จ๊ณ์์ ๋ชจ๋ธ์ ๋ณ๊ฒฝํ ์ ์๋ค.
๋ ๋ค๋ฅธ ํฐ ์ฐจ์ด์ ์ ๊ตฌ์ฑ ์์๊ฐ ์ํ์ ์์ ์ํ๋ฅผ ์์ ํ ์ ์์ง๋ง ์กฐ์์ ์ํ๋ฅผ ์์ ํด์๋ ์๋๋ค. ๋ฐ๋ผ์ ๊ณ๋จ์ ๋ณ๊ฒฝ ์ฌํญ์ ์ด์ ๋ ์ด์ ์ฌ์ฉํ์ง ์๋๋ค. ๋ฐ๋ผ์ ๋ณ๊ฒฝ ๊ฐ์ง๋ ๋ชจ๋ธ์ ๋ณ๊ฒฝ ์ฌํญ์ ํ์ธํ๊ณ ์ด์ ๋ฐ๋ผ DOM์ ์์ ํ๋ ๋ฐ์๋ง ์ฌ์ฉ๋๋ค. ๊ทธ๊ฒ์ ๋ฒ์ 1.x์์์ ๊ฐ์ด ๋ชจ๋ธ์ ๋ถ์์ฉ์ ๊ฐ์ง ์ ์๊ธฐ ๋๋ฌธ์ ๋ชจ๋ธ์ ์ํ (traversal)ํ์ฌ ์์ ํ ์ ์์ผ๋ฏ๋ก ํธ๋ฆฌ๋ฅผ ๋ ๋ฒ ํต๊ณผ ํ ํ์๊ฐ ์๋ค!
์ ํํ๊ฒ ๋งํ์๋ฉด ๊ฐ๋ฐ ๋ชจ๋์์ ๋ ๋ฒ ์ ํํ๊ฒ ํ์ํ์ฌ ๊ทธ๋ฌํ ๋ฐ๋์งํ์ง ์์ ๋ถ์์ฉ์ด ์กด์ฌํ์ง ์๋๋ค๊ณ ์ฃผ์ฅํ๋ค. (์ : ๋ถ๋ชจ ๊ตฌ์ฑ ์์ ๋ชจ๋ธ์ ์์ ํ๋ ํ์ ๊ตฌ์ฑ ์์). ๋ ๋ฒ์งธ ๋จ๊ณ์์ ์ด๋ฌํ ๋ณ๊ฒฝ์ด ๊ฐ์ง๋๋ฉด ๊ฐ๋ฐ์์๊ฒ ๋ฌธ์ ๋ฅผ ๊ฒฝ๊ณ ํ๋ ์์ธ๊ฐ throw๋๋ค. ์ด ์ ๋ต์๋ ๋ง์ ์ด์ ์ด ์๋ค.
โข ์ํ ๋ณ๊ฒฝ์ ์๋ฐฉํฅ์ผ๋ก ์์ฑ๋๋ ๋์ ์์์์ ํ์๋ก ํ ๊ฐ์ง ๋ฐฉ๋ฒ์ผ๋ก ์ด๋ฃจ์ด์ง๊ธฐ ๋๋ฌธ์ ์์ฉ ํ๋ก๊ทธ๋จ์ ๋ํ ์ด์ ๋ฅผ ์ฝ๊ฒ ํ๋จ ํ ์ ์๋ค. โข ๋ณ๊ฒฝ ๊ฐ์ง์๋ ๋ฌดํ ๋ฃจํ๊ฐ ๋ ์ด์์์ ์ ์๋ค. โข ๋ณ๊ฒฝ ๊ฐ์ง๊ฐ ํจ์ฌ ๋น ๋ฅด๋ค.
AngularJS 1.x๋ (M ๊ด์ฐฐ์) * (N ์ฌ์ดํด) ๊ฒ์ฆ์ ์ํํ์ผ๋ Angular 2๋ M ๊ฒ์ฆ๋ง์ ์ํํ๋ค. ๊ทธ๋ฌ๋ Angular 2์ ์ฑ๋ฅ ํฅ์์ ๊ณ ๋ คํด์ผ ํ ๋ ๋ค๋ฅธ ๋งค๊ฐ ๋ณ์๊ฐ ์๋ค. ํ๋ ์ ์ํฌ๊ฐ ์ด๋ฌํ ํ์ธ์ ์ํํ๋ ๋ฐ ๊ฑธ๋ฆฐ ์๊ฐ์ด๋ค. Google ํ์ ์ปดํจํฐ ๊ณผํ ๋ฐ ๊ฐ์ ์์คํ ์ ๋ํ ๋ชจ๋ ์ง์์ ํ์ฉ ํ์๋ค.
์ฑ๋ฅ์ด ์ด๋ป๊ฒ ๊ฐ์ ๋์๋์ง ์ดํดํ๋ ค๋ฉด ๋ ๋ฒ์ ์ ํ๋ ์ ์ํฌ์์ ํํ์์ด ํ๊ฐ๋๊ณ ๊ฐ์ด ๋น๊ต๋๋ ๋ฐฉ์์ ๊ฒํ ํด์ผํ๋ค.
๋ฒ์ 1.x์์๋ ๋ฉ์ปค๋์ฆ์ด ๋งค์ฐ ์ผ๋ฐ์ ์ด๋ค. ํ๋์ ์ผ๋ฐ ๋ฉ์๋๊ฐ ๋ชจ๋ ์์ฒ์ ๋ํด ํธ์ถ๋๋ฉฐ ์ด์ ๊ฐ๊ณผ ์ ๊ฐ์ ๋น๊ตํ ์ ์๋ค. ๋ฌธ์ ๋ ๋ธ๋ผ์ฐ์ (์ : Google ํฌ๋กฌ์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ V8)์์ JavaScript ์ฝ๋๋ฅผ ์คํํ๋ ๊ฐ์ ๋จธ์ ์ด ์ ๋ค๋ฆญ ์ฝ๋๋ฅผ ์ ๋ง ์ข์ํ์ง ์๋๋ค๋ ๊ฒ์ด๋ค.
๊ด์ฐฎ๋ค๋ฉด ๊ฐ์ ๋จธ์ ์ ๋์์ ๋ํด ์กฐ๊ธ ๋งํ๊ฒ ๋ค. ์๋ฐ ์คํฌ๋ฆฝํธ ํ๋ ์ ์ํฌ์ ๋ํ ์ฑ ์์ ๊ทธ๋ฐ ๊ธฐ๋๋ฅผํ์ง ์์๋๊ฐ? ๊ฐ์ ๋จธ์ ์ ์์ฃผ ํน๋ณํ ํ๋ก๊ทธ๋จ์ด๋ค. ์ฆ, ์ฝ๋ ํ ์ฅ์์ฃผ๊ณ ๊ธฐ๊ณ ์ฝ๋๋ก ๋ณํํ์ฌ ์คํํ๋ค. ์ฐ๋ฆฌ ์ค ์์ฃผ ์์๋ง์ด ํจ์จ์ ์ธ ๊ธฐ๊ณ ์ฝ๋๋ฅผ ์์ฑ ํ ์ ์์ง๋ง ์ค์ ๋ก๋ ์ ๊ฒฝ ์ฐ์ง ์๋๋ค. ์ฐ๋ฆฌ๋ ๊ณ ๊ธ ์ธ์ด๋ฅผ ์ฌ์ฉํ๊ณ ๊ฐ์ ์์คํ ์ด์ด๋ฅผ ์ฒ๋ฆฌํ๋๋ก ํ๋ค. ๊ทธ๋ค์ ์ฝ๋๋ฅผ ๋ฒ์ญ ํ ๋ฟ๋ง ์๋๋ผ ์ฝ๋๋ฅผ ์ต์ ํ ํ๋ค. ๊ทธ๋ฆฌ๊ณ ๊ทธ๋ค์ ๊ทธ๊ฒ์ ์์ฃผ ์ ๋์ํ๋ค. ์ผ๋ถ๋ ์ฌ์ ์ ์ ์ ์๋ ๋ฐํ์ ์ ๋ณด์ ์ด์ ์ ๋๋ฆฌ๊ธฐ ๋๋ฌธ์ ์๋์ผ๋ก ์ต์ ํ ๋ ์ฝ๋๋ณด๋ค ๋น ๋ฅด๊ฒ ์คํ๋๋ ์ฝ๋๋ ์์ฑํ๋ค.
์ฑ๋ฅ์ ํฅ์์ํค๊ธฐ ์ํด ๋์ JavaScript ์ฝ๋๋ฅผ ์คํํ๋ ๊ฐ์ ์์คํ ๊ณผ ๊ฐ์ ๊ฐ์ ์์คํ ์ ์ธ๋ผ์ธ ์บ์ฑ์ด๋ผ๋ ์ ๋ต์ ์ฌ์ฉํ๋ค. 40 ๋ ์ (IT์์์ ์์) SmallTalk๋ฅผ ์ํด ๊ณ ์๋ ์์ฃผ ์ค๋๋ ๊ธฐ์ ์ด๋ค. ํ๋ก๊ทธ๋จ์ด ํจ์๋ฅผ ์์ฃผ ํธ์ถํ๊ณ ๋์ผํ ๋ชจ์์ ๊ฐ์ง ๊ฐ์ฒด๋ก VM์ด ํ๊ฐํ๋ ๋ฐฉ์์ ๊ธฐ์ตํด์ผ ํ๋ค.
๋ฐ๋ผ์ ์ด ๊ธฐ์ ์ ์บ์๋ฅผ ์ฌ์ฉํ๋ฏ๋ก ์ด๋ฆ์ด ์ธ๋ผ์ธ ์บ์ฑ๋๋ค. ๊ฐ์ฒด๋ฅผ ๋ฐ์ผ๋ฉด ์บ์์์ ๊ฐ์ฒด์ ๋ชจ์์ ์ธ์ํ๋์ง ํ์ธํ๋ค. ๊ทธ๋ฆฌ๊ณ ๊ทธ๋ ๊ฒ ๋๋ฉด ์บ์ ๋ ์ต์ ํ ๋ ๋ฐฉ๋ฒ์ผ๋ก ๊ฐ์ฒด์ ์์ฑ์ ์ก์ธ์ค ํ๋ค.
์ด๋ฌํ ์ข ๋ฅ์ ์บ์๋ ํจ์์ ์ธ์๊ฐ ๊ฐ์ ๋ชจ์์ ๊ฐ๋๋ค๋ฉด ์ ๋ง ์ ์ฉํ๋ค. ์๋ฅผ ๋ค์ด {name : 'Cรฉdric'}๊ณผ {name : 'Cyril'}์ ๋ชจ์์ ๊ฐ๋ค. ๊ทธ๋ฌ๋ {์ด๋ฆ : 'JB', ์คํฌ : []}์ ๋ค๋ฅธ ๋ ๊ฐ์ ์คํฌ๊ณผ ๊ฐ์ ๋ชจ์์ด ์๋๋ค.
์ธ์๊ฐ ํญ์ ๊ฐ์ ๋ชจ์ ์ธ ๊ฒฝ์ฐ ์บ์๋ ๋จ์ผ ์์์ด๋ฏ๋ก ๋งค์ฐ ๋น ๋ฅธ ๊ฒฐ๊ณผ๋ฅผ ์์ฑํ๋ค. ์บ์์ ๋ช ๊ฐ์ ํญ๋ชฉ ๋ง ์์ผ๋ฉด ๋คํ์ฑ์ ๊ฐ๋๋ค. ์ฆ, ์ฝ๋๊ฐ ์กฐ๊ธ ๋๋ ค์ง๋ ์ฌ๋ฌ ์ข ๋ฅ์ ๊ฐ์ฒด๋ก ๋ฉ์๋๊ฐ ํธ์ถ๋๋ค. ๋ง์ง๋ง์ผ๋ก, ๋๋ฌด ๋ง์ ๋ค๋ฅธ ์ค๋ธ์ ํธ ์ ฐ์ดํ๊ฐ ์๋ ๊ฒฝ์ฐ, VM์ megamorphic์ด๊ธฐ ๋๋ฌธ์ ์บ์๋ฅผ ์์ ํ ์ญ์ ํ๋ค. ๋ฌผ๋ก ์ด๊ฒ์ ์ฑ๋ฅ๋ฉด์์ ์ต์ ์ ๊ฒฝ์ฐ์ด๋ค.
์ด์ AngularJS 1.x์ ๋ณ๊ฒฝ ๊ฐ์ง๋ก ๋์๊ฐ ๋ณด์. ๋ชจ๋ ๊ด์ฐฐ์์ ๋ํด ํธ์ถ ๋์ด ๊ณ ์ ํ ์ ๋ค๋ฆญ ํจ์๊ฐ ์ธ๋ผ์ธ ์บ์ฑ์ ์ฌ์ฉํ์ฌ ์ต์ ํ ํ ์ ์์์ ์์๋ค. ์ฐ๋ฆฌ๋ ์ฝ๋๊ฐ ๊ฐ์ฅ ๋๋ฆฐ ๊ฑฐ๋ํ ์ํ์ ์๋ค. ๋๋ถ๋ถ์ ์ํฉ์์ ์ด๊ฒ์ด ๋ฌธ์ ๊ฐ ๋์ง๋ ์์ง๋ง ๋ง์ ๊ด์ฐฐ์๊ฐ ์๋ ์ผ๋ถ ํ์ด์ง์์๋ ์ฑ๋ฅ์ด ์ถฉ๋ถํ์ง ์์ ํ๊ณ์ ๋๋ฌํ๊ฒ ๋๋ค.
VM์ ์ธ๋ผ์ธ ์บ์ฑ ์ต์ ํ์ ์ด์ ์ ์ป๊ธฐ ์ํด Angular 2๋ ๋ค๋ฅธ ์ ๋ต์ ์ฑํํ๋ค. ๋ชจ๋ ์ ํ์ ๊ฐ์ฒด๋ฅผ ๋น๊ตํ ์ ์๋ ๋จ์ผ ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ ๋์ ๋ชจ๋ ์ ํ์ ๋น๊ต๊ธฐ๋ฅผ ๋์ ์ผ๋ก ์์ฑํ๊ธฐ๋ก ๊ฒฐ์ ํ์๋ค. ์์ฉ ํ๋ก๊ทธ๋จ์ ์์ํ ๋ ํ๋ ์ ์ํฌ๋ ๊ตฌ์ฑ ์์ ํธ๋ฆฌ๋ฅผ ๊ฑฐ์ณ ๊ฐ ๊ตฌ์ฑ ์์์ ํน์ ํ ChangeDetectors ์ธํธ๋ฅผ ์์ฑํ๋ค.
์๋ฅผ ๋ค์ด ๋ทฐ์ ์์ฑ ์ด๋ฆ์ด ํ์๋ ๊ตฌ์ฑ ์์ ์ฌ์ฉ์๊ฐ ์์ผ๋ฉด ํ๋ ์ ์ํฌ๋ ๋ค์๊ณผ ๊ฐ์ ChangeDetector๋ฅผ ์์ฑํ๋ค.
์ด ์ฝ๋๋ ์ง์ ์์ฑํ ์ฝ๋์ ์ ์ฌํ๋ฉฐ VM์ด ๋จ์ผํ์ด๋ฏ๋ก ์ต์ ํ ํ ์ ์๋ค. ๊ฒฐ๊ณผ์ ์ผ๋ก ํจ์ฌ ๋ ๋น ๋ฅธ ์ฝ๋๊ฐ ๊ฐ๋ฅํด์ง๋ฏ๋ก ๋ ๋ณต์กํ ํ์ด์ง๊ฐ ๊ฐ๋ฅํ๋ค. ๋ค์ ๋งํ๋ฉด Angular 2๋ AngularJS 1.x๋ณด๋ค ์ ์ ์์์ ํ๊ฐํ๊ณ ๋ ์ ์ ๊ฐ์ ๋น๊ตํด์ผํ๋ฉฐ (๋จ์ผ ํจ์ค๋ก ์ถฉ๋ถ ํจ) ํ๊ฐ์ ๋น๊ต๊ฐ ๋ ๋นจ๋ผ์ก๋ค! Google ํ์ ์ฒ์๋ถํฐ AngularJS 1.x, Angular 2 ๋ฐ Polymer and React๋ฅผ ๋ค์ํ ์ ์ค ์ผ์ด์ค์์ ๋น๊ต ํ ๋ฒค์น ๋งํฌ๋ฅผ ํตํด ์ฑ๋ฅ์ ๋ชจ๋ํฐ๋งํ์ฌ ์๋ก์ด ๋ฒ์ ์ด ๋ ๋น ๋ฅด๊ฒ ์ ์ง๋๋์ง ํ์ธํ๋ค.
์ค์ ๋ก ํ์ํ๋ค๋ฉด ํ๋ ์ ์ํฌ๊ฐ ์ ๊ณตํ๋ ์๋ ์ต์ ํ๋ณด๋ค ๋ ๋์๊ฐ ์๋ ์๋ค. ChangeDetection ์ ๋ต์ ๊ธฐ๋ณธ๊ฐ์์ ๋ณ๊ฒฝ ๋ ์ ์์ผ๋ฏ๋ก ํน์ ์ฌ์ฉ ์ฌ๋ก์ ๋ง๊ฒ ์กฐ์ ๋ฐ ์กฐ์ ํ ์ ์๋ค.
Reference URL
Last updated