Middle
Kuidas töötab Angular?
sobes.tech AI
Vastus AI-lt
Angular põhineb MVC/MVVM arhitektuuril. See kasutab komponente, andmebaasi ja sõltuvuste süstimist interaktiivsete veebirakenduste loomiseks.
Peamised kontseptsioonid:
- Komponendid: Rakenduse ehitusplokid, mis koosnevad mallist, klassist ja stiilidest.
- Moodulid (NgModules): Koondavad seotud komponente, teenuseid ja teisi elemente.
- Andmebaas: Sünkroniseerib andmeid mudeli ja vaate vahel.
- Üks suund: Andmed voolavad ühest suunast (näiteks mudelist vaatesse).
- Kahe suuna andmebaas
[()]: Muudatused mudelis mõjutavad vaadet ja vastupidi.
- Teenused: Pakuvad funktsionaalsust, mida saab kasutada erinevates komponentides (näiteks HTTP-päringutega töötamine).
- Sõltuvuste süstimine (DI): mehhanism sõltuvuste (näiteks teenuste) komponentidele pakkumiseks.
- Mallid: HTML koos Angulari süntaksi laiendustega andmete kuvamiseks ja sündmuste töötlemiseks.
- Direktiivid: Muudavad DOM elementide käitumist või välimust.
- Struktuursed: Lisavad, eemaldavad või manipuleerivad DOM elemente (näiteks
*ngIf,*ngFor). - Atribuutide: Muudavad olemasoleva elemendi välimust või käitumist (näiteks
[ngClass],[ngStyle]).
- Struktuursed: Lisavad, eemaldavad või manipuleerivad DOM elemente (näiteks
- Komponentide elutsükkel: Hukkide kogum, mis võimaldab koodi käivitada erinevatel komponendi eluperioodidel (näiteks
OnInit,OnDestroy). - NgZone: tagab automaatse muutuste tuvastamise ja vaate uuendamise asünkroonsetes operatsioonides.
Tööprotsess:
- Laadimine: Rakendus laaditakse, Bootstrap moodul käivitab põhikomponendi.
- Renderdamine: Angular kompileerib mallid ja loob DOM-i struktuuri.
- Andmebaas: Seob andmed ja vaate.
- Sündmuste töötlemine: Sündmuste kuulajad reageerivad kasutaja tegevustele.
- Muutuste tuvastamine: Zone jälgib asünkroonseid operatsioone.
- Vaate uuendamine: Muutuste tuvastamisel uuendab Angular vastavad DOM osad.
Kahepoolne andmebaas näide:
<!-- Mallis -->
<input [(ngModel)]="userName">
<p>Tere, {{ userName }}!</p>
// Komponendi klassis
export class MyComponent {
userName: string = '';
}