Middle
Kaip veikia Angular?
sobes.tech AI
Atsakymas iš AI
Angular yra pagrįstas MVC/MVVM architektūra. Jis naudoja komponentus, duomenų ryšį ir priklausomybių injekciją interaktyvių žiniatinklio programų kūrimui.
Pagrindinės koncepcijos:
- Komponentai: Programos statybiniai blokai, sudaryti iš šablono, klasės ir stilių.
- Moduliai (NgModules): Sujungia susijusius komponentus, paslaugas ir kitus elementus.
- Duomenų ryšys: Sinchronizuoja duomenis tarp modelio ir vaizdo.
- Vienpusis ryšys: Duomenys teka viena kryptimi (pavyzdžiui, nuo modelio iki vaizdo).
- Dvikryptis ryšys
[()]: Pakeitimai modelyje veikia vaizdą ir atvirkščiai.
- Paslaugos: Teikia funkcionalumą, kurį gali naudoti skirtingi komponentai (pavyzdžiui, darbui su HTTP užklausomis).
- Priklausomybių injekcija (DI): mechanizmas, teikiantis priklausomybes (pavyzdžiui, paslaugas) komponentams.
- Šablonai: HTML su Angular sintaksės išplėtimais duomenų rodymui ir įvykių apdorojimui.
- Direktyvos: Keičia DOM elementų elgesį arba išvaizdą.
- Struktūrinės: Prideda, pašalina arba manipuliuoja DOM elementais (pavyzdžiui,
*ngIf,*ngFor). - Atributinės: Keičia esamo elemento išvaizdą arba elgesį (pavyzdžiui,
[ngClass],[ngStyle]).
- Struktūrinės: Prideda, pašalina arba manipuliuoja DOM elementais (pavyzdžiui,
- Komponentų gyvenimo ciklas: Rinkinys kabliukų, leidžiančių vykdyti kodą skirtinguose komponento gyvenimo etapuose (pavyzdžiui,
OnInit,OnDestroy). - NgZone: užtikrina automatinį pokyčių aptikimą ir vaizdo atnaujinimą asinchroninėse operacijose.
Darbo procesas:
- Įkėlimas: Programa įkeliamas, Bootstrap modulis paleidžia pagrindinį komponentą.
- Renderavimas: Angular kompiliuoja šablonus ir kuria DOM struktūrą.
- Duomenų ryšys: Nustatomas ryšys tarp duomenų ir vaizdo.
- Įvykių apdorojimas: Įvykių klausytojai reaguoja į naudotojo veiksmus.
- Pokyčių aptikimas: Zona stebi asinchronines operacijas.
- Vaizdo atnaujinimas: Kai aptinkami pokyčiai, Angular atnaujina atitinkamas DOM dalis.
Dvikryptis duomenų ryšio pavyzdys:
<!-- Šablone -->
<input [(ngModel)]="userName">
<p>Sveiki, {{ userName }}!</p>
// Komponento klasėje
export class MyComponent {
userName: string = '';
}