Middle
Hogyan működik az Angular?
sobes.tech MI
Válasz az MI-től
Az Angular az MVC/MVVM architektúrára épül. Komponenseket, adat kötést és függőség injektálást használ az interaktív webalkalmazások építéséhez.
Fő fogalmak:
- Komponensek: Az alkalmazás építőelemei, amelyek sablonból, osztályból és stílusokból állnak.
- Modulok (NgModules): Kapcsolódó komponenseket, szolgáltatásokat és más elemeket csoportosítanak.
- Adat kötés: Az adatok szinkronizálása a modell és a nézet között.
- Egyirányú kötés: Az adatok egy irányban áramlanak (pl. a modellből a nézetbe).
- Kétirányú kötés
[()]: A modellben történt változások hatással vannak a nézetre és fordítva.
- Szolgáltatások: Funkcionalitást nyújtanak, amelyeket különböző komponensek használhatnak (pl. HTTP kérésekkel való munka).
- Függőség injektálás (DI): Mechanizmus a függőségek (pl. szolgáltatások) komponensekhez való biztosítására.
- Sablonok: HTML Angular szintaxis kiterjesztésekkel az adatok megjelenítéséhez és események kezeléséhez.
- Direktívák: Megváltoztatják a DOM elemek viselkedését vagy megjelenését.
- Strukturális: DOM elemek hozzáadása, eltávolítása vagy manipulálása (
*ngIf,*ngFor). - Attribútum: Megváltoztatják egy meglévő elem megjelenését vagy viselkedését (
[ngClass],[ngStyle]).
- Strukturális: DOM elemek hozzáadása, eltávolítása vagy manipulálása (
- Komponens életciklusa: Készlet hook, amely lehetővé teszi kód végrehajtását a komponens életének különböző szakaszaiban (
OnInit,OnDestroy). - NgZone: Automatikus változásérzékelést és nézetfrissítést biztosít aszinkron műveletek során.
Működési folyamat:
- Betöltés: Az alkalmazás betöltődik, a Bootstrap modul elindítja a gyökérkomponenst.
- Renderelés: Angular fordítja a sablonokat és létrehozza a DOM struktúrát.
- Adat kötés: Kapcsolat jön létre az adatok és a nézet között.
- Eseménykezelés: Eseményfigyelők reagálnak a felhasználói műveletekre.
- Változásérzékelés: A zóna figyeli az aszinkron műveleteket.
- Nézet frissítése: Változások észlelésekor Angular frissíti a DOM megfelelő részeit.
Példa kétirányú adat kötésre:
<!-- A sablonban -->
<input [(ngModel)]="userName">
<p>Szia, {{ userName }}!</p>
// A komponens osztályában
export class MyComponent {
userName: string = '';
}