Middle
Jak działa Angular?
sobes.tech AI
Odpowiedź od AI
Angular działa jako framework do tworzenia aplikacji jednostronicowych (SPA). Jego kluczowe komponenty i zasady:
- Modularność: Aplikacje są budowane z modułów.
@NgModuleokreśla, które komponenty, serwisy i inne elementy należą do modułu. - Komponenty: Główne elementy budulcowe aplikacji Angular. Każdy komponent składa się z szablonu (HTML), klasy TypeScript (logika) i stylów (CSS). Dekorator
Componentłączy je. - Wiązanie danych (Data Binding): Angular zapewnia powiązanie między danymi w klasie komponentu a widokiem w szablonie. Istnieją wiązania jednostronne (property binding, interpolacja) i dwustronne (ngModel).
- Dyrektywy: Zmieniają zachowanie lub wygląd elementów DOM. Mogą być strukturalne (
*ngIf,*ngFor) lub atrybutowe (ngClass,ngStyle). - Serwisy: Klasy zawierające logikę, którą można używać przez wiele komponentów. Służą do pobierania danych, logiki biznesowej itp.
- Wstrzykiwanie zależności (Dependency Injection): Mechanizm, dzięki któremu Angular dostarcza serwisy do komponentów lub innych serwisów. Umożliwia bardziej elastyczny i testowalny kod.
- Routing: Umożliwia nawigację między różnymi widokami (komponentami) aplikacji bez przeładowania strony. Definiuje się go za pomocą
RouterModulei konfiguracji tras. - Cykl życia komponentu: Seria zdarzeń od momentu utworzenia do zniszczenia komponentu. Angular zapewnia haki (metody), które można zaimplementować, aby wykonywać działania na określonych etapach (
ngOnInit,ngOnDestroy). - Wykrywanie zmian (Change Detection): Mechanizm, który określa, kiedy zaktualizować widok (DOM) na podstawie zmian w danych aplikacji. Angular używa stref (
NgZone) do śledzenia zdarzeń asynchronicznych i automatycznego uruchamiania wykrywania zmian. - Szablony (Templates): HTML z rozszerzeniami Angular do wiązania danych, dyrektyw i wyrażeń.
- RxJS: Angular aktywnie korzysta z biblioteki RxJS do pracy z danymi asynchronicznymi i strumieniami zdarzeń.
Proces na wysokim poziomie:
- Ładowanie: Przeglądarka ładuje
index.html. - Start: Rozpoczyna się główny moduł aplikacji, zwykle w
main.ts. - Bootstrap:
@NgModuledla głównego modułu (zwykleAppModule) jest ładowany za pomocąplatform-browser. - Renderowanie: Angular tworzy i renderuje komponenty, zaczynając od głównego.
- Wiązanie danych: Dane z klas komponentów są wiązane z szablonami.
- Wykrywanie zmian: Angular monitoruje zmiany danych i aktualizuje widok.
- Routing: Przejścia między widokami są obsługiwane przez router.
// Przykład prostego komponentu
import { Component } from '@angular/core';
@Component({
selector: 'app-greet', // Nazwa tagu do użycia w szablonie
template: `<p>{{ message }}</p>`, // Szablon komponentu
styles: ['p { color: blue; }'] // Style komponentu
})
export class GreetComponent {
// Logika komponentu
message = 'Witaj od Angular!';
}
// Przykład użycia serwisu z DI
import { Injectable } from '@angular/core';
@Injectable({
providedIn: 'root' // Serwis dostępny w głównym iniektorze
})
export class DataService {
getData(): string {
return 'Dane z serwisu';
}
}
// W komponencie korzystającym z serwisu
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) { // Wstrzykiwanie serwisu
}
ngOnInit() {
this.serviceData = this.dataService.getData();
}
}
Angular kompiluje TypeScript i szablony HTML do JavaScript podczas procesu budowania (domyślnie kompilacja AOT), co poprawia wydajność.