๐ Angular๋?
Angular๋ Google์์ ๊ฐ๋ฐํ๊ณ ์ ์ง๋ณด์ ์ค์ธ TypeScript ๊ธฐ๋ฐ์ ํ๋ก ํธ์๋ ํ๋ ์์ํฌ์
๋๋ค.
๋จ์ํ UI ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์๋๋ผ, ์ ์ฒด ์ ํ๋ฆฌ์ผ์ด์
์ ๊ตฌ์ถํ ์ ์๋ ์์ ํ ์๋ฃจ์
์ ์ ๊ณตํฉ๋๋ค.
๐น Angular๋ AngularJS (v1.x) ์ ๊ตฌ๋ถ๋์ด์ผ ํ๋ฉฐ,
ํ์ฌ ์ฐ๋ฆฌ๊ฐ ๋งํ๋ Angular๋ v2 ์ด์ ๋ฒ์ (2016๋
์ดํ) ์ ์๋ฏธํฉ๋๋ค.
๐ง ํต์ฌ ๊ฐ๋
์์ฝ
๊ฐ๋
| ์ค๋ช
|
---|
๐งฑ Component ๊ธฐ๋ฐ ๊ตฌ์กฐ | UI๋ ์ปดํฌ๋ํธ ๋จ์๋ก ๊ตฌ์ฑ๋๋ฉฐ ์ฌ์ฌ์ฉ ๊ฐ๋ฅ |
๐ TypeScript ์ฌ์ฉ | ์ ์ ํ์
๊ธฐ๋ฐ์ผ๋ก ์ฝ๋ ์์ ์ฑ ์ฆ๊ฐ |
๐ ์๋ฐฉํฅ ๋ฐ์ดํฐ ๋ฐ์ธ๋ฉ | ๋ทฐ์ ๋ชจ๋ธ ๊ฐ ์ค์๊ฐ ๋๊ธฐํ ๊ฐ๋ฅ |
๐งฉ ๋ชจ๋ ์์คํ
| ์ฑ์ ๋
ผ๋ฆฌ์ ๋จ์(๋ชจ๋)๋ก ๋๋์ด ๊ด๋ฆฌ |
๐ ๊ฐ๋ ฅํ ๋ผ์ฐํ
์์คํ
| SPA ๊ตฌ์กฐ์์ URL ๊ธฐ๋ฐ ๋ผ์ฐํ
์ ๊ณต |
๐ HTTPClient ๋ด์ฅ | ๋ฐฑ์๋ API ํธ์ถ ๋ด์ฅ ๋ชจ๋๋ก ๊ฐ๋ฅ |
๐ฆ RxJS ๊ธฐ๋ฐ์ ๋ฆฌ์กํฐ๋ธ ํ๋ก๊ทธ๋๋ฐ | ๋น๋๊ธฐ ๋ฐ์ดํฐ ํ๋ฆ ์ ์ด ๊ฐ๋ฅ |
โ
์์กด์ฑ ์ฃผ์
(Dependency Injection) | ํ
์คํธ ์ฉ์ด์ฑ, ํ์ฅ์ฑ ํฅ์ |
๐ Angular ์ํคํ
์ฒ
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์ ์ฅ๋จ์
โ
์ฅ์
- ๋ํ ์ ํ๋ฆฌ์ผ์ด์
์ ์ต์ ํ๋ ์ํคํ
์ฒ
- ์์ ํ ํ๋ ์์ํฌ (๋ผ์ฐํ
, HTTP, DI, ํผ ๋ฑ ๋ค ๋ด์ฅ)
- ํ์
์์ ์ฑ (TypeScript ๊ธฐ๋ฐ)
- ๊ฐ๋ ฅํ ์ปค๋ฎค๋ํฐ์ Google์ ์ง์
- ๊ณต์ CLI ํด์ ๋์ ์์ฐ์ฑ
โ ๋จ์
- ์ง์
์ฅ๋ฒฝ์ด ๋์ (๋ฌ๋ ์ปค๋ธ ์์)
- ์ด๊ธฐ ๋ก๋ฉ ์๋๊ฐ ๋๋ฆด ์ ์์
- ์์ ํ๋ก์ ํธ์๋ ๋ค์ ๊ณผ๋ํ ์ ์์
- ์ฝ๋ ์์ด ๋ง์์ง ์ ์์ (๋ณด์ผ๋ฌํ๋ ์ดํธ)
๐ผ Angular๋ฅผ ์ฌ์ฉํ๋ ๋ํ ๊ธฐ์
- Google (Gmail, Google Cloud Console)
- Microsoft Office ์น๋ฒ์
- Deutsche Bank
- Upwork
- Samsung
๐ง Angular vs React vs Vue ๊ฐ๋จ ๋น๊ต
ํญ๋ชฉ | 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 ์์คํ
|