Middle
Kaip veikia Angular?
sobes.tech AI
Atsakymas iš AI
„Angular“ veikia kaip karkasas vienos puslapio programoms (SPA) kurti. Jo pagrindiniai komponentai ir principai:
- Moduliškumas: Programos sudaromos iš modulių.
@NgModulenustato, kurie komponentai, paslaugos ir kiti elementai priklauso moduliui. - Komponentai: Pagrindiniai Angular programų statybiniai blokai. Kiekvienas komponentas susideda iš šablono (HTML), TypeScript klasės (logika) ir stilių (CSS).
Componentdekoratorius juos sujungia. - Duomenų ryšys (Data Binding): Angular užtikrina ryšį tarp duomenų klasėje ir šablone. Yra vienpusiai (property binding, interpolation) ir dvipusiai duomenų ryšiai (ngModel).
- Direktyvos: Keičia DOM elementų elgseną ar išvaizdą. Yra struktūrinės (
*ngIf,*ngFor) ir atributinės (ngClass,ngStyle). - Paslaugos: Klasės, turinčios logiką, kuri gali būti naudojama keliuose komponentuose. Naudojamos duomenų gavimui, verslo logikai ir kt.
- Priklausomybės injekcija (Dependency Injection): mechanizmas, leidžiantis Angular teikti paslaugas komponentams ar kitoms paslaugoms. Tai daro kodą lankstesnį ir testuojamą.
- Maršrutizacija (Routing): leidžia naršyti tarp skirtingų vaizdų (komponentų) be puslapio perkrovimo. Nustatoma naudojant
RouterModuleir maršrutų konfigūraciją. - Komponento gyvavimo ciklas (Component Lifecycle): įvykiai, vykstantys nuo komponento sukūrimo iki sunaikinimo. Angular siūlo kablius (metodus), kuriuos galima įgyvendinti tam tikrose stadijose (pvz.,
ngOnInit,ngOnDestroy). - Pakeitimų aptikimas (Change Detection): mechanizmas, kuris nustato, kada reikia atnaujinti vaizdą (DOM) remiantis duomenų pokyčiais. Angular naudoja zonas (
NgZone) stebėti asinchroninius įvykius ir automatiškai paleisti pakeitimų aptikimą. - Šablonai (Templates): HTML su Angular išplėtimis duomenų ryšio, direktyvų ir išraiškų naudojimui.
- RxJS: Angular aktyviai naudoja RxJS biblioteką darbui su asinchroniniais duomenimis ir įvykių srautais.
Aukšto lygio darbo procesas:
- Įkėlimas: Naršyklė įkelia
index.html. - Pradžia: Pradedama pagrindinė programos dalis, dažniausiai esanti
main.ts. - Bootstrap:
@NgModuleįkeliamas iš pagrindinio modulio (AppModule) naudojantplatform-browser. - Renderavimas: Angular kuria ir atvaizduoja komponentus, pradedant nuo pagrindinio.
- Duomenų ryšys: Duomenys iš komponento klasių susiejami su šablonais.
- Pakeitimų aptikimas: Angular stebi duomenų pokyčius ir atnaujina vaizdą.
- Maršrutizacija: Perėjimai tarp vaizdų vyksta per routerį.
// Paprasto komponento pavyzdys
import { Component } from '@angular/core';
@Component({
selector: 'app-greet', // Žymės pavadinimas šablone
template: `<p>{{ message }}</p>`, // Komponento šablonas
styles: ['p { color: blue; }'] // Komponento stiliai
})
export class GreetComponent {
// Komponento logika
message = 'Sveiki iš Angular!';
}
// Paslaugos naudojimo pavyzdys DI
import { Injectable } from '@angular/core';
@Injectable({
providedIn: 'root' // Paslauga prieinama pagrindiniame injektoriuje
})
export class DataService {
getData(): string {
return 'Duomenys iš paslaugos';
}
}
// Komponente, kuri naudoja paslaugą
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) { // Paslaugos injekcija
}
ngOnInit() {
this.serviceData = this.dataService.getData();
}
}
Angular kompiliuoja TypeScript ir HTML šablonus į JavaScript'ą proceso metu (AOT kompiliacija pagal numatytuosius nustatymus), kas didina našumą.