Middle
Kuidas töötab Angular?
sobes.tech AI
Vastus AI-lt
Angular töötab raamistikuna ühe lehe rakenduste (SPA) loomisel. Selle põhikomponendid ja põhimõtted:
- Moodulid: Rakendused ehitatakse moodulitest.
@NgModulemäärab, millised komponendid, teenused ja teised elemendid kuuluvad moodulile. - Komponendid: Angulari rakenduste põhiehitised. Iga komponent koosneb mallist (HTML), TypeScript klassist (loogika) ja stiilidest (CSS).
Componentdekorator ühendab need. - Andmete sidumine (Data Binding): Angular tagab ühenduse komponendi klassi andmete ja malliga. On ühe suuna (property binding, interpolation) ja kahekordse (ngModel) sidumise võimalused.
- Direktiivid: Muudavad DOM elementide käitumist või välimust. On struktuursed (
*ngIf,*ngFor) ja atribuutide (ngClass,ngStyle) tüüpi. - Teenused: Klassid, mis sisaldavad loogikat, mida saab kasutada mitmes komponendis. Kasutatakse andmete saamiseks, äriloogika jaoks jne.
- Sõltuvuste süstimine (Dependency Injection): mehhanism, mis võimaldab Angularil pakkuda teenuseid komponentidele või teistele teenustele. Teeb koodi paindlikumaks ja testitavamaks.
- Routimine (Routing): võimaldab navigeerida erinevate vaadete (komponentide) vahel ilma lehe uuesti laadimata. Konfigureeritakse
RouterModuleja marsruutide konfiguratsiooniga. - Komponendi elutsükkel (Component Lifecycle): sündmuste seeria, mis toimub komponendi loomise ja hävitamise vahel. Angular pakub haake (meetodeid), mida saab teostada teatud etappidel (näiteks,
ngOnInit,ngOnDestroy). - Muudatuste tuvastamine (Change Detection): mehhanism, mis määrab, millal tuleb vaadet (DOM) uuendada, põhinedes andmete muutustel. Angular kasutab tsoone (
NgZone), et jälgida asünkroonseid sündmusi ja automaatselt käivitada muudatuste tuvastus. - Mallid (Templates): HTML koos Angular laiendustega andmete sidumiseks, direktiivide ja väljenditega.
- RxJS: Angular kasutab aktiivselt RxJS teeki asünkroonsete andmete ja sündmuste voogude töötlemiseks.
Tööprotsess kõrgtasemel:
- Laadimine: Brauser laadib
index.html. - Algus: Käivitatakse rakenduse juur, tavaliselt
main.ts-st. - Bootstrap:
@NgModulelaaditakse põhimoodulist (AppModule)platform-browserabil. - Renderdamine: Angular loob ja renderdab komponendid, alustades juurkomponendist.
- Andmete sidumine: Komponentide klasside andmed siduvad mallidega.
- Muudatuste tuvastamine: Angular jälgib andmete muutusi ja uuendab vaadet.
- Routimine: Vaadete vaheline liikumine toimub routeri kaudu.
// Näide lihtsast komponendist
import { Component } from '@angular/core';
@Component({
selector: 'app-greet', // Tägina šablonis
template: `<p>{{ message }}</p>`, // Komponendi mall
styles: ['p { color: blue; }'] // Komponendi stiil
})
export class GreetComponent {
// Komponendi loogika
message = 'Tere Angularist!';
}
// Näide teenuse kasutamisest DI abil
import { Injectable } from '@angular/core';
@Injectable({
providedIn: 'root' // Teenus on saadaval põhisinjektoris
})
export class DataService {
getData(): string {
return 'Andmed teenusest';
}
}
// Komponent, mis kasutab teenust
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) { // Teenuse injekteerimine
}
ngOnInit() {
this.serviceData = this.dataService.getData();
}
}
Angular kompileerib TypeScripti ja HTML-mallid JavaScriptiks koostamise ajal (AOT kompileerimine vaikimisi), mis tõstab jõudlust.