๐ ๋ชฉ์ฐจ
์ต๊ทค๋ฌ๋ Google์์ ๊ฐ๋ฐํ ์ธ๊ธฐ ์๋ ํ๋ก ํธ์๋ ์น ๊ฐ๋ฐ ํ๋ ์์ํฌ์ ๋๋ค. ๋จ์ผ ํ์ด์ง ์ ํ๋ฆฌ์ผ์ด์ (SPA)์ ๋ง๋ค๊ธฐ ์ํ ํจ์จ์ ์ด๊ณ ๊ฐ๋ ฅํ ๋๊ตฌ๋ฅผ ์ ๊ณตํฉ๋๋ค. ์ต์ ์น ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ์ ๋ชฉํ๋ก ํ๋ ๊ฐ๋ฐ์๋ผ๋ฉด ์ต๊ทค๋ฌ๋ฅผ ๊ผญ ์ดํดํ๊ณ ํ์ฉํ ํ์๊ฐ ์์ต๋๋ค. ์๋์์ ์ต๊ทค๋ฌ์ ์ฃผ์ ํน์ง๊ณผ ์ฌ์ฉ๋ฒ, ๊ทธ๋ฆฌ๊ณ ์ค๋ฌด ์ ์ฉ ์ฌ๋ก๋ฅผ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
์ต๊ทค๋ฌ๋ ๋ฌด์์ธ๊ฐ?
์ต๊ทค๋ฌ๋ 2016๋ ์ AngularJS์ ํ์์์ผ๋ก ์ถ์๋ ์คํ์์ค ํ๋ ์์ํฌ์ ๋๋ค.
์ฃผ๋ก TypeScript๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ๊ณ ์์ผ๋ฉฐ, HTML ํ ํ๋ฆฟ๊ณผ ์ปดํฌ๋ํธ๋ฅผ ์ฌ์ฉํ์ฌ ์ฌ์ฉ์ ์ธํฐํ์ด์ค๋ฅผ ๊ตฌ์ถํฉ๋๋ค.
๋จ์ผ ํ์ด์ง ์ ํ๋ฆฌ์ผ์ด์ (SPA)์ ๋ง๋๋ ๋ฐ ์ต์ ํ๋์ด ์์ต๋๋ค.
Google์์ ์ฃผ๋์ ์ผ๋ก ๊ด๋ฆฌํ๋ฉฐ, ๋๊ท๋ชจ ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ์ ์ ํฉํฉ๋๋ค.
Angular CLI๋ ํจ์จ์ ์ธ ๊ฐ๋ฐ๊ณผ ๋น๋๋ฅผ ์ง์ํฉ๋๋ค.
์ต๊ทค๋ฌ๋ ํ๋ซํผ ๋ ๋ฆฝ์ ์ด๋ฉฐ, ๋ชจ๋ฐ์ผ, ๋ฐ์คํฌํฑ ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ๋ ์ง์ํฉ๋๋ค.
๋ชจ๋ํ์ ์ปดํฌ๋ํธ ๊ธฐ๋ฐ ์ํคํ ์ฒ๋ฅผ ํตํด ์ ์ง๋ณด์์ฑ๊ณผ ํ์ฅ์ฑ์ ์ ๊ณตํฉ๋๋ค.
๋ค์ํ ๊ฐ๋ฐ ์๊ตฌ๋ฅผ ์ถฉ์กฑํ๊ธฐ ์ํด ๊ฐ๋ ฅํ ๋ฐ์ดํฐ ๋ฐ์ธ๋ฉ ๋ฐ RxJS์ ๊ฐ์ ๋ฆฌ์กํฐ๋ธ ํ๋ก๊ทธ๋๋ฐ์ ์ง์ํฉ๋๋ค.
์ต๊ทค๋ฌ์ ์ฃผ์ ํน์ง
์ต๊ทค๋ฌ๋ ์ปดํฌ๋ํธ ๊ธฐ๋ฐ ์ํคํ ์ฒ๋ฅผ ์ฑํํ์ฌ ๊ฐ๋ฐ ์๋๋ฅผ ๋์ด๊ณ ์ฌ์ฌ์ฉ์ฑ์ ์ ๊ณตํฉ๋๋ค.
์๋ฐฉํฅ ๋ฐ์ดํฐ ๋ฐ์ธ๋ฉ์ ํตํด ๋ทฐ์ ๋ชจ๋ธ ๊ฐ์ ์ค์๊ฐ ๋๊ธฐํ๋ฅผ ์ง์ํฉ๋๋ค.
Dependency Injection(DI)์ ํตํด ์ฝ๋์ ๋ชจ๋์ฑ๊ณผ ํ ์คํธ ์ฉ์ด์ฑ์ ํฅ์์ํต๋๋ค.
TypeScript ๊ธฐ๋ฐ์ผ๋ก, ์ฝ๋ ์์ ์ฑ๊ณผ ์ค๋ฅ ๊ฐ์๋ฅผ ๋์ต๋๋ค.
RxJS์ ํจ๊ป ๋ฆฌ์กํฐ๋ธ ํ๋ก๊ทธ๋๋ฐ์ ์ง์ํ์ฌ ๋น๋๊ธฐ ๋ฐ์ดํฐ ์คํธ๋ฆผ ์ฒ๋ฆฌ๊ฐ ๊ฐ๋ฅํฉ๋๋ค.
Angular Universal์ ์ฌ์ฉํ๋ฉด ์๋ฒ ์ฌ์ด๋ ๋ ๋๋ง(SSR)์ด ๊ฐ๋ฅํฉ๋๋ค.
Ivy ์ปดํ์ผ๋ฌ๋ ๋ ๋น ๋ฅธ ๋น๋ ์๊ฐ๊ณผ ์ฑ๋ฅ ์ต์ ํ๋ฅผ ์ ๊ณตํฉ๋๋ค.
๊ด๋ฒ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ํ๊ณ๋ฅผ ํตํด ๋ค์ํ ๊ธฐ๋ฅ์ ์์ฝ๊ฒ ๊ตฌํํ ์ ์์ต๋๋ค.
์ต๊ทค๋ฌ์ ์ํคํ ์ฒ ์ดํดํ๊ธฐ
์ต๊ทค๋ฌ๋ ์ปดํฌ๋ํธ, ํ ํ๋ฆฟ, ๋ชจ๋, ์๋น์ค๋ก ๊ตฌ์ฑ๋ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง๊ณ ์์ต๋๋ค.
์ปดํฌ๋ํธ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ UI๋ฅผ ์ ์ํ๋ ๊ธฐ๋ณธ ๋จ์์ ๋๋ค.
ํ ํ๋ฆฟ์ HTML๊ณผ Angular Directive๋ก ๊ตฌ์ฑ๋์ด ์์ต๋๋ค.
๋ชจ๋์ ๊ด๋ จ๋ ์ปดํฌ๋ํธ์ ์๋น์ค๋ค์ ๊ทธ๋ฃนํํ์ฌ ๊ด๋ฆฌํฉ๋๋ค.
๋ผ์ฐํฐ๋ฅผ ํตํด ํ์ด์ง ์ ํ์ ๊ด๋ฆฌํ๊ณ , SPA ๋์์ ๊ตฌํํฉ๋๋ค.
์๋น์ค๋ ๋น์ฆ๋์ค ๋ก์ง๊ณผ ๋ฐ์ดํฐ ์ฒ๋ฆฌ๋ฅผ ๋ด๋นํ๋ฉฐ, DI๋ก ์ ๊ณต๋ฉ๋๋ค.
Angular CLI๋ฅผ ์ฌ์ฉํ๋ฉด ์ ํ๋ฆฌ์ผ์ด์ ๊ตฌ์กฐ๋ฅผ ์๋ํํ์ฌ ๊ฐ๋ฐ ์๋๋ฅผ ๋์ผ ์ ์์ต๋๋ค.
์ต๊ทค๋ฌ๋ ์ด๋ฌํ ๊ตฌ์กฐ๋ฅผ ํตํด ๋ชจ๋ํ, ํ์ฅ์ฑ, ํ ์คํธ ์ฉ์ด์ฑ์ ์ ๊ณตํฉ๋๋ค.
์ต๊ทค๋ฌ์ ์ฅ์
์ต๊ทค๋ฌ๋ ๋น ๋ฅธ ๊ฐ๋ฐ ์๋์ ์ ์ง๋ณด์์ฑ์ ์ ๊ณตํฉ๋๋ค.
๋๊ท๋ชจ ํ๋ก์ ํธ์ ์ ํฉํ ๊ฐ๋ ฅํ ๋๊ตฌ์ ๊ธฐ๋ฅ์ ๊ฐ์ถ๊ณ ์์ต๋๋ค.
TypeScript ์ฌ์ฉ์ผ๋ก ๋ ์์ ํ ์ฝ๋ ์์ฑ์ด ๊ฐ๋ฅํฉ๋๋ค.
๋ฆฌ์กํฐ๋ธ ํ๋ก๊ทธ๋๋ฐ๊ณผ RxJS๋ฅผ ํตํ ๋น๋๊ธฐ ์์ ์ฒ๋ฆฌ๊ฐ ๊ฐํธํฉ๋๋ค.
Google์ ์ง์์ ์ธ ์ง์์ผ๋ก ์์ ์ฑ๊ณผ ์ต์ ํธ๋ ๋๋ฅผ ์ ๊ณตํฉ๋๋ค.
๊ฐ๋ ฅํ ์ปค๋ฎค๋ํฐ์ ์ํ๊ณ๋ก ์ธํ ํ๋ถํ ์๋ฃ์ ํ๋ฌ๊ทธ์ธ์ด ์กด์ฌํฉ๋๋ค.
Angular Material๊ณผ ๊ฐ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก ํ๋์ ์ธ UI ๊ตฌ์ฑ ์์๋ฅผ ์ฝ๊ฒ ์ฌ์ฉํ ์ ์์ต๋๋ค.
ํจ์จ์ ์ธ ํ ์คํธ ํ๊ฒฝ์ ์ง์ํ๋ฉฐ, ๋ค์ํ ์ ๋ ๋ฐ ํตํฉ ํ ์คํธ๊ฐ ๊ฐ๋ฅํฉ๋๋ค.
์ต๊ทค๋ฌ ์์ํ๊ธฐ
Node.js์ npm์ ์ค์นํ์ฌ ํ๊ฒฝ์ ์ค๋นํฉ๋๋ค.
Angular CLI๋ฅผ ์ค์นํ์ฌ ํ๋ก์ ํธ๋ฅผ ์์ฑํฉ๋๋ค.
`ng new` ๋ช ๋ น์ด๋ก ์ ํ๋ก์ ํธ๋ฅผ ์์ฑํฉ๋๋ค.
์ปดํฌ๋ํธ๋ `ng generate component` ๋ช ๋ น์ด๋ก ์ฝ๊ฒ ์์ฑํ ์ ์์ต๋๋ค.
๊ฐ๋ฐ ์๋ฒ๋ `ng serve` ๋ช ๋ น์ด๋ก ์คํํ ์ ์์ต๋๋ค.
ํ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ npm์ ํตํด ์ค์นํฉ๋๋ค.
์ต๊ทค๋ฌ ๋ฌธ์๋ฅผ ์ฐธ๊ณ ํ์ฌ ์ฒซ ๋ฒ์งธ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ง๋์ธ์.
ํ ์คํธ ํ๊ฒฝ ๊ตฌ์ถ๋ Angular CLI์์ ์๋์ผ๋ก ์ค์ ํ ์ ์์ต๋๋ค.
์ต๊ทค๋ฌ์ ํ์ฉ ์ฌ๋ก
๋๊ท๋ชจ ๊ธฐ์ ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ์ ์ ํฉํฉ๋๋ค.
๋จ์ผ ํ์ด์ง ์ ํ๋ฆฌ์ผ์ด์ (SPA) ์ ์์ ๋ง์ด ์ฌ์ฉ๋ฉ๋๋ค.
e-Commerce ์น์ฌ์ดํธ์์ ๊ณ ๊ธ ์ฌ์ฉ์ ๊ฒฝํ ์ ๊ณต์ด ๊ฐ๋ฅํฉ๋๋ค.
๊ต์ก ํ๋ซํผ๊ณผ ๋์๋ณด๋ ์์คํ ์ ์ ํฉํฉ๋๋ค.
์ง๋ณด๋ ์น ์ ํ๋ฆฌ์ผ์ด์ (PWA)์ ๋ง๋ค ๋ ์ฌ์ฉ๋ฉ๋๋ค.
๋ชจ๋ฐ์ผ ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ์ ์ ์ฉํ ์ ์์ต๋๋ค.
๋ฐ์ดํฐ ์๊ฐํ์ ์ฐจํธ ์ค์ฌ์ ์ ํ๋ฆฌ์ผ์ด์ ์์ ์ ์ฉํฉ๋๋ค.
Angular Universal๋ก SEO๊ฐ ์ค์ํ ํ๋ก์ ํธ์์ ํ์ฉ๋ฉ๋๋ค.
์ต๊ทค๋ฌ ๊ฐ๋ฐ ๋ชจ๋ฒ ์ฌ๋ก
์ปดํฌ๋ํธ๋ ๋จ์ผ ์ฑ ์ ์์น์ ๋ฐ๋ฅด๋ ๊ฒ์ด ์ค์ํฉ๋๋ค.
๋ช ํํ ํด๋ ๊ตฌ์กฐ๋ฅผ ์ ์งํ์ฌ ๊ฐ๋ ์ฑ์ ๋์ด์ธ์.
Lazy Loading์ ํ์ฉํด ์ ํ๋ฆฌ์ผ์ด์ ์ฑ๋ฅ์ ์ต์ ํํฉ๋๋ค.
RxJS ์ฐ์ฐ์๋ฅผ ์ ์ ํ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ ํ๋ฆ์ ๊ด๋ฆฌํฉ๋๋ค.
Angular CLI ๋ช ๋ น์ด๋ฅผ ์ ๊ทน ํ์ฉํ์ฌ ๊ฐ๋ฐ ์๊ฐ์ ์ ์ฝํ์ธ์.
์ ๋ ํ ์คํธ์ ํตํฉ ํ ์คํธ๋ฅผ ์ ๊ธฐ์ ์ผ๋ก ์คํํ์ธ์.
ํ ํ๋ฆฟ์์ ๋ณต์กํ ๋ก์ง์ ์ง์ํ๊ณ ์๋น์ค์ ๋ก์ง์ ๋ถ๋ฆฌํฉ๋๋ค.
์ ๊ธฐ์ ์ผ๋ก Angular ๋ฌธ์๋ฅผ ์ฐธ๊ณ ํ์ฌ ์ต์ ๊ธฐ๋ฅ์ ํ์ตํ์ธ์.
์ต๊ทค๋ฌ ๊ด๋ จ ์์ฃผ ๋ฌป๋ ์ง๋ฌธ FAQ
Q: ์ต๊ทค๋ฌ์ AngularJS๋ ๋ฌด์์ด ๋ค๋ฅธ๊ฐ์?
A: Angular๋ TypeScript ๊ธฐ๋ฐ์ ์ต์ ํ๋ ์์ํฌ์ด๋ฉฐ, AngularJS๋ JavaScript๋ก ์์ฑ๋ ์ด๊ธฐ ๋ฒ์ ์ ๋๋ค.
Q: ์ต๊ทค๋ฌ์์ ๊ฐ์ฅ ์ค์ํ ๊ฐ๋ ์ ๋ฌด์์ธ๊ฐ์?
A: ์ปดํฌ๋ํธ, ํ ํ๋ฆฟ, ์๋น์ค, ๋ชจ๋, DI, RxJS๊ฐ ํต์ฌ ๊ฐ๋ ์ ๋๋ค.
Q: ์ต๊ทค๋ฌ๋ฅผ ๋ฐฐ์ฐ๋ ๋ฐ ์ผ๋ง๋ ๊ฑธ๋ฆด๊น์?
A: ๊ธฐ๋ณธ ๊ฐ๋ ์ 1~2์ฃผ, ์ค๋ฌด ์ฌ์ฉ์ 1~2๊ฐ์ ์ด์ ๊ฑธ๋ฆด ์ ์์ต๋๋ค.
Q: ์ต๊ทค๋ฌ๋ ์ด๋ค ํ๋ก์ ํธ์ ์ ํฉํ๊ฐ์?
A: ๋๊ท๋ชจ SPA, e-Commerce, ๋์๋ณด๋ ์์คํ , ๊ต์ก ํ๋ซํผ์ ์ ํฉํฉ๋๋ค.
Q: TypeScript๋ฅผ ๊ผญ ๋ฐฐ์์ผ ํ๋์?
A: ๋ค, ์ต๊ทค๋ฌ๋ TypeScript๋ฅผ ๊ธฐ๋ณธ์ผ๋ก ์ฌ์ฉํ๋ฏ๋ก ํ์์ ์ผ๋ก ์ตํ์ผ ํฉ๋๋ค.
Q: ์ต๊ทค๋ฌ๋ SEO์ ์ ํฉํ๊ฐ์?
A: Angular Universal์ ์ฌ์ฉํ๋ฉด ์๋ฒ ์ฌ์ด๋ ๋ ๋๋ง์ ํตํด SEO๋ฅผ ๊ฐ์ ํ ์ ์์ต๋๋ค.
Q: React์ ์ต๊ทค๋ฌ ์ค ๋ฌด์์ ์ ํํด์ผ ํ๋์?
A: ํ๋ก์ ํธ ์๊ตฌ ์ฌํญ๊ณผ ํ ๊ฒฝํ์ ๋ฐ๋ผ ์ ํํ๋ฉด ๋ฉ๋๋ค. ์ต๊ทค๋ฌ๋ ๊ตฌ์กฐํ๋ ํ๋ ์์ํฌ๋ฅผ ์ ํธํ ๋ ์ ๋ฆฌํฉ๋๋ค.
Q: ์ต๊ทค๋ฌ ํ๋ก์ ํธ์ ๋ฐฐํฌ๋ ์ด๋ป๊ฒ ํ๋์?
A: `ng build --prod` ๋ช ๋ น์ด๋ก ๋น๋ํ ํ, ๋ฐฐํฌ ์๋ฒ์ ์ ๋ก๋ํฉ๋๋ค.