Middle
Kako radi Angular?
sobes.tech АИ
Одговор од АИ
Angular radi kao okvir za kreiranje jednostranica (SPA). Njegove ključne komponente i principi:
- Modularnost: Aplikacije se grade od modula.
@NgModuledefiniše koje komponente, servisi i drugi elementi pripadaju modulu. - Komponente: Glavni građevni blokovi Angular aplikacija. Svaka komponenta se sastoji od šablona (HTML), TypeScript klase (logika) i stilova (CSS). Dekorator
Componentih povezuje. - Veza podataka (Data Binding): Angular obezbeđuje vezu između podataka u klasi komponente i prikaza u šablonu. Postoje jednostruka (property binding, interpolation) i dvostruka veza podataka (ngModel).
- Direktive: Menjaju ponašanje ili izgled elemenata DOM-a. Postoje strukturne (
*ngIf,*ngFor) i atributne (ngClass,ngStyle). - Servisi: Klase koje sadrže logiku koja može biti korišćena od strane više komponenti. Koriste se za dobijanje podataka, poslovnu logiku itd.
- Umetanje zavisnosti (Dependency Injection): Mehanizam putem kojeg Angular pruža servise komponentama ili drugim servisima. Čini kod fleksibilnijim i lakšim za testiranje.
- Routing: Omogućava navigaciju između različitih prikaza (komponenti) aplikacije bez osvežavanja stranice. Definiše se pomoću
RouterModulei konfiguracije ruta. - Životni ciklus komponente: Serija događaja koja se dešava od kreiranja do uništenja komponente. Angular pruža hook-ove (metode) koje se mogu implementirati za izvršavanje akcija u određenim fazama (
ngOnInit,ngOnDestroy). - Detekcija promena (Change Detection): Mehanizam koji određuje kada je potrebno osvežiti prikaz (DOM) na osnovu promena u podacima aplikacije. Angular koristi zone (
NgZone) za praćenje asinhronih događaja i automatsko pokretanje detekcije promena. - Šabloni (Templates): HTML sa Angular proširenjima za vezivanje podataka, direktive i izraze.
- RxJS: Angular aktivno koristi biblioteku RxJS za rad sa asinhronim podacima i tokovima događaja.
Proces rada na visokom nivou:
- Učitavanje: Pregledač učitava
index.html. - Start: Pokreće se korenski deo aplikacije, obično u
main.ts. - Bootstrapping:
@NgModuleza korenski modul (običnoAppModule) se učitava pomoćuplatform-browser. - Renderovanje: Angular kreira i renderuje komponente, počevši od korenskog.
- Veza podataka: Podaci iz klasa komponenti se povezuju sa šablonima.
- Detekcija promena: Angular prati promene podataka i osvežava prikaz.
- Routing: Prelazi između prikaza se upravljaju od strane rutera.
// Primer jednostavne komponente
import { Component } from '@angular/core';
@Component({
selector: 'app-greet', // Ime taga za korišćenje u šablonu
template: `<p>{{ message }}</p>`, // Šablon komponente
styles: ['p { color: blue; }'] // Stilovi komponente
})
export class GreetComponent {
// Logika komponente
message = 'Zdravo od Angular!';
}
// Primer korišćenja servisa sa DI
import { Injectable } from '@angular/core';
@Injectable({
providedIn: 'root' // Servis je dostupan u korenskom injektoru
})
export class DataService {
getData(): string {
return 'Podaci iz servisa';
}
}
// U komponenti koja koristi servis
import { Component, OnInit } from '@angular/core';
import { DataService } from './data.service';
@Component({
selector: 'app-show-data',
template: `<p>{{ serviceData }}</p>`,
})
export class ShowDataComponent implements OnInit {
serviceData: string = '';
constructor(private dataService: DataService) { // Umetanje servisa
}
ngOnInit() {
this.serviceData = this.dataService.getData();
}
}
Angular kompajlira TypeScript i HTML šablone u JavaScript tokom procesa build-a (po difoltu AOT kompilacija), što povećava performanse.