๐ Angular
2010๋
๊ตฌ๊ธ์์ ๊ฐ๋ฐํ SPA(Single Page Application) ๋ฐฉ์์ Javascript Framework.
TypeScript ๊ธฐ๋ฐ์ผ๋ก ๋งค์ฐ ์์ ์ ์ด๊ณ ํํํ ํ๋ก ํธ์๋ ์ฑ ๊ฐ๋ฐ์ด ๊ฐ๋ฅํ๋ฉฐ ๋ชจ๋ฐ์ผ ์น, ๋ค์ดํฐ๋ธ ๋ชจ๋ฐ์ผ, ๋ฐ์คํฌํ ์ ํ๋ฆฌ์ผ์ด์
๊น์ง ํ๋ก ํธ์๋ ๊ฐ๋ฐ์ ํ์ํ ๋๋ถ๋ถ์ ๊ธฐ๋ฅ์ ๊ฐ์ถ๊ณ ์๋ค.
Spring MVC์ ๊ต์ฅํ ์ ์ฌํ ๋ฐฉ์์ผ๋ก ํ๋ก๊ทธ๋๋ฐ์ด ์งํ๋๋ค.
๐ง ์ฅ์
- Component ๊ธฐ๋ฐ
๊ธฐ๋ฅ์ ๋ฐ๋ผ ์ฝ๋๋ฅผ ๋ถ๋ฆฌํ๊ณ , ์ฌ์ฌ์ฉ ํ๋ ๊ฒ์ด ๊ต์ฅํ ์ฝ๋ค. - ์๋ฐฉํฅ ๋ฐ์ธ๋ฉ ์ง์
- ์นํ์ด์ง ์๋
Angular๋ก ๋ง๋ SPA๋ ๋ค๋ฅธ ํ์ด์ง๋ก์ ์ ํ ์๋๊ฐ ๊ต์ฅํ ๋น ๋ฅด๋ค. - TypeScript
TypeScript๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ๊ธฐ ๋๋ฌธ์ ์๊ฒฉํ์ง๋ง ๊ทธ๋งํผ ์ง๊ด์ ์ด๊ณ ์ค๋ฅ๋ฅผ ์ค์ผ ์ ์๋ค. - ํ๋ ์์ํฌ
Angular๋ ํ๋ก ํธ์๋ ์น ๊ฐ๋ฐ์ ์ํ ์ข ํฉ ํ๋ ์์ํฌ์ด๋ฏ๋ก ์ ์ฒด๋ฅผ ์์ฐ๋ฅด๋ ๊ตฌ์กฐ๋ฅผ ์ ๊ณตํ๋ค. ๋ทฐ์์๋ถํฐ ํ ์คํธ๊น์ง ๋ง์ ๋ชจ๋์ ๊ฐ์ง๊ณ ์์ผ๋ฉฐ, ๊ธฐ๋ณธ ์ ๊ณต๋๋ ๋ชจ๋์ด๊ธฐ ๋๋ฌธ์ ๊ฐ ๋ชจ๋์ ์ ํฉ์ฑ์ ๋ณด์ฅํ ์ ์๊ณ ์์ฐ์ค๋ฌ์ด ๋ฐ์ดํฐ ์ฐ๊ฒฐ์ด ๋ณด์ฅ๋๋ค. - ๊ฐ์ฅ ์ฒด๊ณ์ ์ด๊ณ ์ ์ ๋ฆฌ๋์ด์๋ ๋ฌธ์์ ํํ ๋ฆฌ์ผ
๐ง ๋จ์
- ๋ฐฉ๋ํ ํ์ต ๋ถ๋
์ฃผ๋ ฅ ์ธ์ด๊ฐ Typescript์ธ๋ฐ Typescript๋ง ๋ฐฐ์ฐ๋ฉด ๋์ด ์๋๋ผ Angular๊ฐ ๊ฐ์ง๊ณ ์๋ ์ฌ๋ฌ๊ฐ์ง ๊ฐ๋ ๋ค์ ์ตํ๊ณ , ๊ทธ ๊ฐ๋ ๋ค์ด ์ด๋ป๊ฒ Typescript๋ก ํํ๋๋์ง๋ ์ตํ์ผ ํ๋ค.
๊ทธ๋ฆฌ๊ณ Angular์ ์ฅ์ ์ด ๋ผ์ฐํ , ์ํ๊ด๋ฆฌ, ํผ ์ ํจ์ฑ ๋ฑ ํ์ํ ๋๊ตฌ๋ฅผ ๋ชจ์๋์ All In One ํ๋ ์์ํฌ๋ผ๋ ๊ฒ์ธ๋ฐ, ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ๊ฐ์ฅ ๋ฐฐ์ธ ๊ฒ์ด ๋ง๊ณ ์ด๋ ค์ด ํธ์ด๋ค. - ๋๋ฆฐ ์ด๊ธฐ ๋ก๋ฉ ์๋
Angular๋ก ๋ง๋ SPA์ ์ด๊ธฐ ๋ก๋ฉ ์๋๋ ๋ค์ ๋๋ฆฐ ํธ์ด๋ค. - ๊ฒ์์์ง ์ธ๋ฑ์ฑ
Angular๋ก ๋ง๋ SPA๋ฅผ ์ ๋๋ก ์ธ๋ฑ์ฑํ์ง ๋ชปํ๋ ํฌ๋กค๋ฌ๊ฐ ์๊ฐ๋ณด๋ค ๋ง๋ค.
๐ฅAngular์ AngularJS์ ์ฐจ์ด
AngularJS์ ๋ฌธ์ ์ ์ ๋ณด์ํด์ ๋์จ ๊ฒ์ด Angular์ด๋ค. ํธํ์ฑ์ด ์๋ ์๋ก์ด ํ๋ ์์ํฌ๋ก ์ดํดํ๋ ๊ฒ์ด ์ข๋ค.
- AngularJS๋ Javascript ๊ธฐ๋ฐ์ด๊ณ Angular์ Typescript ๊ธฐ๋ฐ์ด๋ค.
- AngularJS๋ Controller์ $scope ๊ธฐ๋ฐ ๊ฐ๋ฐ์ด๊ณ Angular์ Component ๊ธฐ๋ฐ ๊ฐ๋ฐ์ด๋ค.
- AngularJS๋ณด๋ค Angular๊ฐ ์ข๋ ํฅ์๋ ๋ชจ๋ ์์คํ ๊ณผ DOM ์ ์ด ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ฉฐ API ๋ํ ๋จ์ํ๋์๋ค.
- ์ ํ์ ๋ฐ์ดํฐ ๋ฐ์ธ๋ฉ์ ์ง์ํ๊ณ ๋๋ ํฐ๋ธ์ ์๋น์ค, ์์กด์ฑ ์ฃผ์ ์ ๊ฐ์ํ๋์๋ค.
๐ Vue
2014๋ Evan You๋ผ๋ ๊ฐ์ธ์ด ๊ฐ๋ฐํ Framework. ์ฝ๋๊ฐ ๊น๋ํ๊ณ ๋ฐฐ์ฐ๊ธฐ ์ฝ๊ธฐ ๋๋ฌธ์ ๊ฐ์ฅ ๋์ค์ ์๊ฒผ์ง๋ง ์ฑ์ฅ ์๋๊ฐ ์ ๋ง ๋น ๋ฅด๋ค.
๐ง ์ฅ์
- ์ ์ ๋ฌ๋์ปค๋ธ
jQuery์ ์ต์ํ ๊ธฐ์กด ๊ฐ๋ฐ์๋ ์ฝ๊ฒ ๋ฐฐ์ธ ์ ์๋ค. - Component ๊ธฐ๋ฐ์ ํ๋ ์์ํฌ
- ๊ฐ๋ณ๊ณ ๋น ๋ฅธ ๊ฐ๋ฐ
- ์๋ฐฉํฅ๊ณผ ๋จ๋ฐฉํฅ ๋ฐ์ธ๋ฉ ์ง์
- Virtual DOM
๐ง ๋จ์
- ๋ค๋ฅธ ํ๋ ์์ํฌ๋ณด๋ค ์ ์ ์ํ๊ณ
- ๋ฎ์ ์ธ์ง๋
- ์ ์ ์์ Plugin/Components
- ์ธ์ด ์ฅ๋ฒฝ
๋ฉ์ด์ ๊ฐ๋ฐ์๋ค์ด ๋์ฒด๋ก ์ค๊ตญ ์ปค๋ฎค๋ํฐ์ ์ง์ค๋์ด ์๋ค. - ์ผ์ ํ์ง์์ ์ ๋ฐ์ดํธ ์ฃผ๊ธฐ
- ์์ฒด ํ
ํ๋ฆฟ ์ฌ์ฉ
์์ฒด ํ ํ๋ฆฟ์ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ํฐ ๊ท๋ชจ์ ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ์ ๋ฌธ์ ๋ฅผ ๊ฒช์ ์ ์๊ณ JS์์ ์ง์ ์ฐ๊ณ ์ธก๋ฉด์์๋ ๋ถํธํ๋ค. - ํ์ ์ด์์ ์ ์ฐ์ฑ
ํ๋ก์ ํธ๊ฐ ๋ ๋ณต์กํด์ง๊ฑฐ๋ ๋ ๋ง์ ์๋ฌ๊ฐ ๋ฐ์ํ ์ ์๋ค.
๐ React
"์ง์์ ์ผ๋ก ๋ฐ์ดํฐ๊ฐ ๋ณํํ๋ ๋๊ท๋ชจ ์ ํ๋ฆฌ์ผ์ด์ ๊ตฌ์ถํ๋ ๊ฒ" ์ ๋ชฉํ๋ก 2013๋ ํ์ด์ค๋ถ์์ ๊ฐ๋ฐํ Javascript ๋ผ์ด๋ธ๋ฌ๋ฆฌ. MVC Architecture(ex. Angular, Vue)์๋ ๋ค๋ฅด๊ฒ ๋ฆฌ์กํธ๋ ์ค๋ก์ง View๋ง ๋ด๋นํ๋ค. ๊ทธ๋งํผ ๋ด์ฅ๋์ด ์๋ ๊ธฐ๋ฅ์ด ๋ถ์กฑํด third-party ๋ผ์ด๋ธ๋ฌ๋ฆฌ(ex. React-router, Redux)๋ฅผ ํจ๊ป ์ฌ์ฉํ๋ค. ํ์ด์ค๋ถ์ ์ง์์ ์ธ ๊ด๋ฆฌ์ ํจ๊ป ์ํ๊ณ๊ฐ ํ์ฑํ๋์ด ์์ผ๋ฉฐ ๋ค์ํ ์๋ฃ, ๊ทธ๋ฆฌ๊ณ React Native์ ์ฌ์ฉ์ผ๋ก ์ธํด ์ฌ์ฉ์๊ฐ ๊พธ์คํ ์ฆ๊ฐํ๊ณ ์๋ค.
๐ง ์ฅ์
- Virtual DOM
DOM ํธ๋ฆฌ๋ฅผ ์ถ์ํํ์ฌ Javascript ๊ฐ์ฒด๋ก ๋ง๋ค์ด ๋๊ณ ๋ณ๊ฒฝ๋๋ ๋ถ๋ถ์ Virtual DOM์์ ์ฒ๋ฆฌํ์ฌ ์ฑ๋ฅ์ ๋์ธ๋ค. - SSR - Next.js
- ๐ฅ SSR์ด๋?
์๋ฒ์์ ์ฌ์ฉ์์๊ฒ ๋ณด์ฌ์ค ํ์ด์ง๋ฅผ ๋ชจ๋ ๊ตฌ์ฑํ์ฌ ์ฌ์ฉ์์๊ฒ ํ์ด์ง๋ฅผ ๋ณด์ฌ์ฃผ๋ ๋ฐฉ์์ด๋ค. - JSX - JavaScritp + XML
JSX(์๋ฐ์คํฌ๋ฆฝํธ ํ์ฅ ๋ฌธ๋ฒ)์ ์ฌ์ฉํ์ฌ ์ปดํฌ๋ํธ๋ฅผ ์์ฑํ ์ ์๋ค. - React Native
์ฑ ๊ฐ๋ฐ๊น์ง ๊ฐ๋ฅํ๊ฒ ํด์ค๋ค.
๐ง ๋จ์
- View Only
๋ฐ์ดํฐ ๋ชจ๋ธ๋ง, Routing, Ajax ๋ฑ๋ฑ์ ๊ธฐ๋ฅ์ ์ ๊ณตํ์ง ์๋๋ค. View ์ด์ธ์ ๊ธฐ๋ฅ์ ์จ๋ํํฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ(Third party library. ํจํค์ง, ๋ชจ๋๋ก ๋ถ๋ฆฌ๊ธฐ๋ ํจ)๋ฅผ ์ด์ฉํ๊ฑฐ๋ ์ง์ ๊ตฌํํด์ผํ๋ค. - IE8 ์ดํ ์ง์ํ์ง ์์
IE8 ์ดํ ๋ฒ์ ์ ์ง์ํด์ผ ํ ๊ฒฝ์ฐ v0.14 ๋ฒ์ ์ ์ฌ์ฉ ํด์ผํ๋ค. - Javascript์ ๋ํ ์ง์์ด ์์ ๋ ๋ฐฐ์ฐ๊ธฐ ํ๋ค๋ค.
View ์ธ ๊ธฐ๋ฅ๋ค์ ์ง์ ๊ตฌํํ๊ฑฐ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ฌ ๊ตฌํํด์ผ ํ๊ธฐ ๋๋ฌธ์ JavaScript ๋ฐฐ๊ฒฝ์ง์์ด ๋ถ์กฑํ ๊ฒฝ์ฐ์๋ ์ฌ์ฉ์ด ํ๋ค๋ค.
'Front-End' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์๋งจํฑ ์น(Semantic Web)์ด๋? (0) | 2021.11.24 |
---|---|
Refactoring(๋ฆฌํฉํ ๋ง) (0) | 2021.11.21 |
์ธ์ฆ(Authentication) (0) | 2021.11.18 |
์ธ๊ฐ(Authorization) (0) | 2021.11.18 |
Self Refactoring Tip (0) | 2021.11.17 |
๋๊ธ