Middle
Hogyan működik az Angular?
sobes.tech MI
Válasz az MI-től
Az Angular egy keretrendszer egylapos alkalmazások (SPA) létrehozásához. Fő összetevői és alapelvei:
- Modularitás: Az alkalmazások modulokból épülnek fel. Az
@NgModulehatározza meg, hogy mely komponensek, szolgáltatások és egyéb elemek tartoznak egy modulhoz. - Komponensek: Az Angular alkalmazások fő építőkövei. Minden komponens egy sablomból (HTML), egy TypeScript osztályból (logika) és stílusokból (CSS) áll. A
Componentdekorátor köti össze őket. - Adat kötés (Data Binding): Az Angular összekapcsolja a komponens osztályában lévő adatokat a sablonban megjelenő tartalommal. Vannak egysíkú (property binding, interpolation) és kétirányú (ngModel) kötés típusok.
- Direktívák: A DOM elemek viselkedését vagy megjelenését módosítják. Strukturális (
*ngIf,*ngFor) és attribútum típusú (ngClass,ngStyle). - Szolgáltatások (Services): Olyan osztályok, amelyek logikát tartalmaznak, amit több komponens is használhat. Adatok lekérésére, üzleti logikára stb. használják.
- Függőségi injektálás (Dependency Injection): Az Angular által biztosított mechanizmus, amely szolgáltatásokat nyújt komponenseknek vagy más szolgáltatásoknak. Rugalmassá és tesztelhetővé teszi a kódot.
- Routing: Lehetővé teszi az alkalmazás különböző nézetei közötti navigációt oldal újratöltése nélkül. A
RouterModuleés útvonal konfiguráció segítségével definiálható. - Komponens életciklusa: Egy sor esemény, amely a komponens létrehozásától a megsemmisítéséig történik. Az Angular hook-okat (metódusokat) biztosít, amelyeket implementálhatunk bizonyos szakaszokban (
ngOnInit,ngOnDestroy). - Változás észlelése (Change Detection): A mechanizmus, amely meghatározza, mikor kell frissíteni a nézetet (DOM) az alkalmazás adataiban bekövetkezett változások alapján. Az Angular zónákat (
NgZone) használ az aszinkron események követésére és a változás észlelésének automatikus indítására. - Sablonok (Templates): Angular kiterjesztésekkel ellátott HTML, adatkötéshez, direktívákhoz és kifejezésekhez.
- RxJS: Az Angular aktívan használja az RxJS könyvtárat az aszinkron adatok és eseményfolyamok kezelésére.
Magas szintű munkafolyamat:
- Betöltés: A böngésző betölti az
index.html-t. - Indítás: A gyökéralkalmazás elindul, általában a
main.ts-ben. - Bootstrapping: A
@NgModulea gyökérmodulhoz (általábanAppModule) betöltődik aplatform-browsersegítségével. - Renderelés: Az Angular létrehozza és rendereli a komponenseket, kezdve a gyökértől.
- Adat kötés: A komponens osztályok adatai kötődnek a sablonokhoz.
- Változás észlelése: Az Angular figyeli az adatok változásait, és frissíti a nézetet.
- Routing: A nézetek közötti átmeneteket a router kezeli.
// Egyszerű komponens példa
import { Component } from '@angular/core';
@Component({
selector: 'app-greet', // Címke neve a sablonban való használathoz
template: `<p>{{ message }}</p>`, // Komponens sablonja
styles: ['p { color: blue; }'] // Komponens stílusai
})
export class GreetComponent {
// Komponens logikája
message = 'Üdv az Angular-tól!';
}
// Szolgáltatás DI-vel való használatának példája
import { Injectable } from '@angular/core';
@Injectable({
providedIn: 'root' // A szolgáltatás elérhető a gyökér injektorban
})
export class DataService {
getData(): string {
return 'Szolgáltatási adatok';
}
}
// Szolgáltatást használó komponensben
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) { // Szolgáltatás injektálása
}
ngOnInit() {
this.serviceData = this.dataService.getData();
}
}
Az Angular a TypeScript-et és az HTML sablonokat JavaScript-re fordítja a build folyamat során (alapértelmezett AOT fordítás), ami növeli a teljesítményt.