Questions:
Run Command:
For at starte applikationen:
ng serve -o
angular routing er en simpel collection der inderholder to ting(.ts):
disse implementeres i .HTML med routerLink og router-outlet.
Routing bruges i Angular til at navigere mellem forskellige komponenter og skabe en SPA med flere visninger.
Single Page Applications (SPA) er nyttige, fordi en spa er hvor mainUI bliver loaded 1 gang ogsp bliver de efterspurgte userinteefaces loaded når det ee nødvendigt. First load er fx header, footer og homepage. Dette forbedrer både brugeroplevelsen og applikationens ydeevne.
Angular håndtere routing på ved hjælp af RouterModule og RouterLink-direktiv.
RouterModule bruges til at konfigurere routeren, og RouterLink bruges til at navigere til en specifik rute.
i HTML SKAL der derfor defineres en
Routing i Angular bruger en “first match wins”-strategi, hvilket betyder, at mere specifikke ruter skal placeres før mindre specifikke ruter. man kan tilføje en RouterLink-direktiv for at linke til en rute.
Eksempel:
src/app/pick/pick.component.html<a routerLink="/home">Home</a>
<a routerLink="/about">About</a>
Det er vigtigt at sikre, at ruter defineret med RouterLink-direktivet er angivet i RoutingModule.
Eksempel:
src/app/app-routing.module.tsconst routes: Routes = [
{ path: 'home', component: HomeComponent },
{ path: 'about', component: AboutComponent }
];
To routere kan bruges: en ekstern router til hele applikationen og en intern router til lazy-loaded moduler.
Her et intern router: Eksempel:
src/app/lazy/lazy-routing.module.tsconst routes: Routes = [
{ path: '', component: LazyComponent }
];
Wildcard-ruter kan bruges til at håndtere ikke-eksisterende ruter. Dette er en ekstern router. Eksempel:
src/app/app-routing.module.ts{ path: '**', component: PageNotFoundComponent }
Lazy loading reducerer den initiale loadtime ved kun at hente moduler når det er nødvendigt. Komponenter skal derfor deles ind i moduler for at være lazy loading kombatible.
Angular indlæser som standard alle moduler ved applikationsstart, hvilket kan skabe en lang
inital loading time. Dette afhjælpes ved lazy loading.
Når en rute navigeres til, indlæses modulet dynamisk.
Lazy-loading konfigureres i routeren ved hjælp af loadChildren-egenskaben.
Eksempel:
src/app/app-routing.module.ts{ path: 'lazy', loadChildren: () => import('./lazy/lazy.module').then(m => m.LazyModule) }
For at få adgang til ruteinformation i en komponent kan du injicere ActivatedRoute-servicen i komponentens constructor.
ActivatedRoute indeholder detaljer om ruten.
Eksempel:
src/app/number/number.component.tsconstructor(private route: ActivatedRoute) {}
I visningen kan vi vise ruteinformationen.
Eksempel:
src/app/number/number.component.html<p>Route number: </p>
Route guards bruges til at forhindre uautoriserede brugere i at få adgang til bestemte ruter. Der er fire typer:
Guard-logikken implementeres ved at implementere det relevante interface (fx CanActivate).
Eksempel:
src/app/pick.guard.tsexport class PickGuard implements CanActivate {
canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean {
return confirm('Are you sure you want to access this route?');
}
}
Guarden bruges i routeren.
Eksempel:
src/app/app-routing.module.ts{ path: 'protected', component: ProtectedComponent, canActivate: [PickGuard] }
Server-Side Rendering (SSR) er en teknik, hvor applikationen renderes på serveren i stedet for klienten. Dette forbedrer både SEO og ydeevnen.
Applikationen kører ved build-tid for at generere HTML og fange dens tilstand. Dette reducerer belastningen på serveren ved at levere statiske HTML-filer.
Rehydrering er processen, hvor klientens JavaScript “booter” og genbruger den servergenererede HTML. Dette betyder, at JavaScript genskaber event listeners og dataforbindelser baseret på den eksisterende DOM, uden at genindlæse hele siden. Dette gør SSR meget effektiv til interaktive applikationer.
Hydration er en del af rehydreringen og refererer specifikt til genoprettelsen af applikationens tilstand på klienten. Det sikrer, at klientens JavaScript synkroniseres med den server-renderede HTML. Under hydration binder Angular alle komponenter og services til DOM’en og genopretter eventuelle interaktive elementer.
ng add @angular/ssr
npm run dev:ssr