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 ์์คํ |
์๋์ฐ ์ด์์ฒด์ ์ ๋ ธํธ๋ถ์์๋ iPhone ์ ์ ํ ๋๋ง์ด ์ ์๋๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. ๋ณดํต iPhone์ ๋๋ผ์ด๋ฒ๊ฐ ์ค์น๊ฐ ์๋์์ด์์ธ…
์ค๋ผํด ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฑ๋ฅ์ ๋ ผํ ๋, ๋ด๋ถ์ ์ผ๋ก ๋ฐ์ํ๋ ๊ฒฝํฉ(Contention)์ ํผํ ์ ์๋ ์ฃผ์ ๋ค. ํนํ ๋ค์์ ํ๋ก์ธ์ค๊ฐ…
์๋ ํ์ธ์, ํน์ ์ด๋ฐ ์๊ฐํด ๋ณธ ์ ์์ผ์ ๊ฐ์? "๋ด๊ฐ ํฌ์ํ ํ์ฌ๋ ๋๊ฐ ๊ฐ์ํ๊ณ , ์ด๋ป๊ฒ ์ด์๋ ๊น?" ์ค๋์…
'๋ฒกํฐ ์คํ ์ด' ์๋ฒฝ ๊ฐ์ด๋: AI ์๋, ๋ฐ์ดํฐ์ ์๋ก์ด ์ฌ์ฅ์ ๋ง๋๋ค IT ์ ๊ณ๋ ์ธ๊ณต์ง๋ฅ(AI)์ด๋ผ๋ ๊ฑฐ๋ํ ํจ๋ฌ๋ค์์…
1. Gemini CLI๋ ๋ฌด์์ธ๊ฐ์? Gemini CLI๋ ํฐ๋ฏธ๋ ํ๊ฒฝ์์ ์ง์ Gemini ๋ชจ๋ธ๊ณผ ์ํธ์์ฉํ ์ ์๋๋ก ๋ง๋ค์ด์ง…
๊ณผ์ ํฉ์ ๋จธ์ ๋ฌ๋์์ ํ์ต์ฉ๋ฐ์ดํฐ๋ฅผ ๊ณผํ๊ฒ ํ์ตํ์ฌ, ์ค์ ๋ฐ์ดํฐ๋ฅผ ์์ธกํ์ง ๋ชปํ๋ ํ์์ ๋งํฉ๋๋ค. ์ธ๊ณต์ง๋ฅ(AI)์ ํ์ต ๋ฐฉ๋ฒ์ ์ฐ๋ฆฌ๊ฐ ์ํ๊ณต๋ถ๋ฅผ…