Angular๋ Google์์ ๊ฐ๋ฐํ๊ณ ์ ์ง๋ณด์ ์ค์ธ TypeScript ๊ธฐ๋ฐ์ ํ๋ก ํธ์๋ ํ๋ ์์ํฌ์
๋๋ค.
๋จ์ํ UI ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์๋๋ผ, ์ ์ฒด ์ ํ๋ฆฌ์ผ์ด์
์ ๊ตฌ์ถํ ์ ์๋ ์์ ํ ์๋ฃจ์
์ ์ ๊ณตํฉ๋๋ค.
๐น Angular๋ AngularJS (v1.x) ์ ๊ตฌ๋ถ๋์ด์ผ ํ๋ฉฐ,
ํ์ฌ ์ฐ๋ฆฌ๊ฐ ๋งํ๋ Angular๋ v2 ์ด์ ๋ฒ์ (2016๋ ์ดํ) ์ ์๋ฏธํฉ๋๋ค.
| ๊ฐ๋ | ์ค๋ช |
|---|---|
| ๐งฑ Component ๊ธฐ๋ฐ ๊ตฌ์กฐ | UI๋ ์ปดํฌ๋ํธ ๋จ์๋ก ๊ตฌ์ฑ๋๋ฉฐ ์ฌ์ฌ์ฉ ๊ฐ๋ฅ |
| ๐ TypeScript ์ฌ์ฉ | ์ ์ ํ์ ๊ธฐ๋ฐ์ผ๋ก ์ฝ๋ ์์ ์ฑ ์ฆ๊ฐ |
| ๐ ์๋ฐฉํฅ ๋ฐ์ดํฐ ๋ฐ์ธ๋ฉ | ๋ทฐ์ ๋ชจ๋ธ ๊ฐ ์ค์๊ฐ ๋๊ธฐํ ๊ฐ๋ฅ |
| ๐งฉ ๋ชจ๋ ์์คํ | ์ฑ์ ๋ ผ๋ฆฌ์ ๋จ์(๋ชจ๋)๋ก ๋๋์ด ๊ด๋ฆฌ |
| ๐ ๊ฐ๋ ฅํ ๋ผ์ฐํ ์์คํ | SPA ๊ตฌ์กฐ์์ URL ๊ธฐ๋ฐ ๋ผ์ฐํ ์ ๊ณต |
| ๐ HTTPClient ๋ด์ฅ | ๋ฐฑ์๋ API ํธ์ถ ๋ด์ฅ ๋ชจ๋๋ก ๊ฐ๋ฅ |
| ๐ฆ RxJS ๊ธฐ๋ฐ์ ๋ฆฌ์กํฐ๋ธ ํ๋ก๊ทธ๋๋ฐ | ๋น๋๊ธฐ ๋ฐ์ดํฐ ํ๋ฆ ์ ์ด ๊ฐ๋ฅ |
| โ ์์กด์ฑ ์ฃผ์ (Dependency Injection) | ํ ์คํธ ์ฉ์ด์ฑ, ํ์ฅ์ฑ ํฅ์ |
app/
โโโ app.module.ts โ ๋ฃจํธ ๋ชจ๋
โโโ app.component.ts โ ์ปดํฌ๋ํธ ํด๋์ค (๋น์ฆ๋์ค ๋ก์ง)
โโโ app.component.html โ ํ
ํ๋ฆฟ (UI ๊ตฌ์กฐ)
โโโ app.component.css โ ์คํ์ผ
โโโ service/ โ ์๋น์ค (๋น์ฆ๋์ค ๋ก์ง ๋ถ๋ฆฌ) Angular๋ CLI ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ ์ฑ ์์ฑ ๋ฐ ๊ด๋ฆฌ๊ฐ ๋งค์ฐ ํธ๋ฆฌํฉ๋๋ค.
npm install -g @angular/cli # CLI ์ค์น
ng new my-app # ์ ํ๋ก์ ํธ ์์ฑ
cd my-app
ng serve # ๊ฐ๋ฐ ์๋ฒ ์คํ (localhost:4200) app.component.ts)import { Component } from '@angular/core';
@Component({
selector: 'app-root',
templateUrl: './app.component.html'
})
export class AppComponent {
title = '๋์ ์ฒซ ๋ฒ์งธ Angular ์ฑ';
} app.component.html)<h1>{{ title }}</h1>
<input [(ngModel)]="title">
<p>์
๋ ฅํ ์ ๋ชฉ: {{ title }}</p> app.module.ts)import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { FormsModule } from '@angular/forms';
import { AppComponent } from './app.component';
@NgModule({
declarations: [ AppComponent ],
imports: [ BrowserModule, FormsModule ],
providers: [],
bootstrap: [ AppComponent ]
})
export class AppModule { } | ๊ธฐ๋ฅ | ์ค๋ช |
|---|---|
@Component | UI ๋จ์ ์ ์ธ |
@NgModule | ์ฑ์ ๋ฃจํธ ๋ฐ ์๋ธ ๋ชจ๋ ์ค์ |
@Injectable | ์๋น์ค ํด๋์ค ์ ์ธ |
RouterModule | ๋ผ์ฐํ ์ค์ |
HttpClientModule | REST API ํธ์ถ ๊ฐ๋ฅ |
ngModel | ์๋ฐฉํฅ ๋ฐ์ดํฐ ๋ฐ์ธ๋ฉ |
*ngFor, *ngIf | ํ ํ๋ฆฟ ๋ฐ๋ณต ๋ฐ ์กฐ๊ฑด ์ฒ๋ฆฌ |
| ํญ๋ชฉ | Angular | React | Vue |
|---|---|---|---|
| ๊ตฌ์กฐ | ์์ ํ ํ๋ ์์ํฌ | UI ๋ผ์ด๋ธ๋ฌ๋ฆฌ | ์ง์ ์ฅ๋ฒฝ ๋ฎ์ ํ๋ ์์ํฌ |
| ์ธ์ด | TypeScript | JavaScript / TS ๊ฐ๋ฅ | JavaScript / TS ๊ฐ๋ฅ |
| ๋ฐ์ดํฐ ๋ฐ์ธ๋ฉ | ์๋ฐฉํฅ | ๋จ๋ฐฉํฅ | ์๋ฐฉํฅ |
| ๋ฌ๋ ์ปค๋ธ | ๋์ | ์ค๊ฐ | ๋ฎ์ |
| ๊ธฐ์ ์ฌ์ฉ์ฒ | Google, ์ผ์ฑ, Microsoft ๋ฑ | Meta, Airbnb, Netflix ๋ฑ | Alibaba, Xiaomi ๋ฑ |
| ํญ๋ชฉ | ์ค๋ช |
|---|---|
| ํ๋ ์์ํฌ๋ช | Angular |
| ์ธ์ด ๊ธฐ๋ฐ | TypeScript |
| ๊ตฌ์กฐ ํน์ง | Component + Module ์ค์ฌ |
| ๋ฐ์ธ๋ฉ ๋ฐฉ์ | ์๋ฐฉํฅ ๋ฐ์ดํฐ ๋ฐ์ธ๋ฉ |
| ๊ณต์ ๋๊ตฌ | Angular CLI |
| ์ ํฉ ๋์ | ๋ํ SPA, ๋ณต์กํ B2B/B2C ์์คํ |
์์์ ์ ํ ์ ๋ฐ๋์ ํ์ธํด์ผ ํ ์ฒดํฌ๋ฆฌ์คํธ๋ฅผ ๊ณต๊ฐํฉ๋๋ค. ๊ณต์ ํ๊ฐ ์๋ฃ ์กฐํ๋ฒ, ๋ฐฉ๋ฌธ ์ ํ์ธ…
๊ณต๊ณต๊ธฐ๊ด ์ฑ์ฉ ๋น๋ฆฌ์ ์คํ์ ํผํด ์ง์์์ ๋์๋ฒ์ ์ ๋ฆฌํ์ต๋๋ค. ์ฑ์ฉ ๋น๋ฆฌ ์ ๊ณ ๋ฐฉ๋ฒ, ๊ณต์ต์ ๊ณ ์ ๋ณดํธ์ ๋, ์ทจ์ค์…
์ฃผ์ ์์ค์ ์ธ๊ธ ์ ์ฝ์ ํ์ฉํ๋ ํฉ๋ฒ์ ๋ฐฉ๋ฒ์ ๊ณต๊ฐํฉ๋๋ค. ํด์ธ์ฃผ์ ์์ตํต์ฐ, ISA ๊ณ์ข ํ์ฉ, ์ฐ๊ธ๊ณ์ข ์ ์ธ๊น์ง…
๋ฐฐ๋ฌ์ด ์์ ์๊ฐ๋ณด๋ค ํฌ๊ฒ ๋ฆ์ผ๋ฉด ์ทจ์ยทํ๋ถ์ ์์ฒญํ ์ ์์ต๋๋ค. ๋ฐฐ๋ฌ์ฑ๋ณ ์ง์ฐ ์ทจ์ ๋ฐฉ๋ฒ๊ณผ ์๋ชป ๋ฐฐ๋ฌ๋์…
ํต์ ๋น ์ ์ฝ์ ํต์ฌ์ ์๊ธ์ ์ต์ ํ์ ๋๋ค. ๋ด ๋ฐ์ดํฐ ์ฌ์ฉ๋ ํ์ธ๋ฒ, ์๋ฐํฐ ์ ํ ๋น๊ต, ์์ฝ๊ธ ์์ด ์๊ธ์ …
ํด์ง ํ ํด์ง๊ธ์ ๋ฐ์ง ๋ชปํ๋ค๋ฉด ์ฆ์ ๋ ธ๋๋ถ์ ์ ๊ณ ํ์ธ์. ์ง๊ธ ๊ธฐํ, ์๊ฒฉ ์๊ฑด, ์ ๊ณ ๋ฐฉ๋ฒ, ์์ก์ฒด๋น๊ธ…