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 ์์คํ |
์ฝ์คํผ 8% ํญ๋ฝ, ์ํท๋ธ๋ ์ด์ปค ๋ฐ๋, SKํ ๋ ์ฝค Claude AI ์ฐจ๋จ๊น์ง. ํ๊ตญ์ AI ๋ ๋ฒ๋ฆฌ์ง ๋ฒ๋ธ์ด ๋จ ํ๋ฃจ…
SNS ์ฌ์ง 1์ฅ์ผ๋ก 30์ด ๋ง์ ๋ฅํ์ดํฌ ์์์ด ์์ฑ๋ฉ๋๋ค. ๋น์ ์ ์ผ๊ตด์ด ์ด๋ฏธ ๋ฒ์ฃ์ ์ ์ฉ๋๊ณ ์์ ์…
SNS ์ฌ์ง 1์ฅ์ผ๋ก 30์ด ๋ง์ ๋ฅํ์ดํฌ ์์์ด ์์ฑ๋ฉ๋๋ค. ๋น์ ์ ์ผ๊ตด์ด ์ด๋ฏธ ๋ฒ์ฃ์ ์ ์ฉ๋๊ณ ์์ ์…
๋ฌ๋ฌ/์ ํ์จ์ด ๊ธ๋ฑํ๋ ์ด์ ์ ์ค์ํ ์ํฅ์ ์ ๋ฆฌํ์ต๋๋ค. ์ง๊ธ ๋น์ฅ ํ์ฉํ ์ ์๋ ํ์ ยทํฌ์ ๋์ ์ ๋ต๊น์ง…
๋ฏธ๋์์ ยท๋ฏธ๋์์ ๋ฒค์ฒํฌ์ยท๋ฏธ๋์์ ์๋ช ์ด ๋๋ฐ ๊ธ๋ฑํ ์ด์ ๋ ์คํ์ด์คX ์์ฅ ๊ธฐ๋๊ฐ์ ๋๋ค. ์ธ ํ์ฌ๊ฐ ์คํ์ด์คX์ ์ด๋ป๊ฒ ์ฐ๊ฒฐ๋์ด ์๋์ง ์์ธํ ๋ถ์ํ์ต๋๋ค.
์คํ์ด์คX ์์ฅ์ด ๊ณ์ ๋ฏธ๋ค์ง๋ ์ง์ง ์ด์ ๋ฅผ ํํค์ณค์ต๋๋ค. ํ์ฑ ๊ณํ, ์คํ๋งํฌ ๋ถ๋ฆฌ, ๊ตญ๋ฐฉ ๊ณ์ฝ... ๋จธ์คํฌ๊ฐ ์ ๋…