d48cda4081
CI / Test (ubuntu-latest, Node 18.x, bun) (push) Failing after 15m1s
CI / Test (ubuntu-latest, Node 18.x, npm) (push) Failing after 15m1s
CI / Test (ubuntu-latest, Node 18.x, pnpm) (push) Failing after 15m1s
CI / Test (ubuntu-latest, Node 18.x, yarn) (push) Failing after 15m1s
CI / Test (ubuntu-latest, Node 20.x, bun) (push) Failing after 17m13s
CI / Test (ubuntu-latest, Node 20.x, npm) (push) Failing after 18m42s
CI / Test (ubuntu-latest, Node 20.x, pnpm) (push) Failing after 15m0s
CI / Test (ubuntu-latest, Node 20.x, yarn) (push) Failing after 49m44s
CI / Test (ubuntu-latest, Node 22.x, bun) (push) Failing after 51m55s
CI / Test (ubuntu-latest, Node 22.x, pnpm) (push) Failing after 21m57s
CI / Test (ubuntu-latest, Node 22.x, npm) (push) Failing after 37m39s
CI / Test (ubuntu-latest, Node 22.x, yarn) (push) Failing after 34m7s
CI / Validate Components (push) Failing after 37m15s
CI / Python Tests (push) Failing after 10m1s
CI / Security Scan (push) Failing after 10m1s
CI / Lint (push) Failing after 17m12s
CI / Coverage (push) Failing after 20m19s
CI / Test (macos-latest, Node 18.x, bun) (push) Has been cancelled
CI / Test (macos-latest, Node 18.x, npm) (push) Has been cancelled
CI / Test (macos-latest, Node 18.x, pnpm) (push) Has been cancelled
CI / Test (macos-latest, Node 18.x, yarn) (push) Has been cancelled
CI / Test (windows-latest, Node 18.x, npm) (push) Has been cancelled
CI / Test (windows-latest, Node 18.x, pnpm) (push) Has been cancelled
CI / Test (windows-latest, Node 18.x, yarn) (push) Has been cancelled
CI / Test (macos-latest, Node 20.x, bun) (push) Has been cancelled
CI / Test (macos-latest, Node 20.x, npm) (push) Has been cancelled
CI / Test (macos-latest, Node 20.x, pnpm) (push) Has been cancelled
CI / Test (macos-latest, Node 20.x, yarn) (push) Has been cancelled
CI / Test (windows-latest, Node 20.x, npm) (push) Has been cancelled
CI / Test (windows-latest, Node 20.x, pnpm) (push) Has been cancelled
CI / Test (windows-latest, Node 20.x, yarn) (push) Has been cancelled
CI / Test (macos-latest, Node 22.x, bun) (push) Has been cancelled
CI / Test (macos-latest, Node 22.x, npm) (push) Has been cancelled
CI / Test (macos-latest, Node 22.x, pnpm) (push) Has been cancelled
CI / Test (macos-latest, Node 22.x, yarn) (push) Has been cancelled
CI / Test (windows-latest, Node 22.x, npm) (push) Has been cancelled
CI / Test (windows-latest, Node 22.x, pnpm) (push) Has been cancelled
CI / Test (windows-latest, Node 22.x, yarn) (push) Has been cancelled
62 lines
1.4 KiB
Markdown
62 lines
1.4 KiB
Markdown
# Route Loading Strategies
|
|
|
|
Angular supports two main strategies for loading routes and components to balance initial load time and navigation responsiveness.
|
|
|
|
## Eager Loading
|
|
|
|
Components are bundled into the initial JavaScript payload and are available immediately.
|
|
|
|
```ts
|
|
{ path: 'home', component: Home }
|
|
```
|
|
|
|
- **Pros**: Seamless transitions.
|
|
- **Cons**: Increases initial bundle size.
|
|
|
|
## Lazy Loading
|
|
|
|
Components or routes are loaded only when the user navigates to them. This creates separate JavaScript "chunks".
|
|
|
|
### Lazy Loading Components
|
|
|
|
Use `loadComponent` to fetch the component on demand.
|
|
|
|
```ts
|
|
{
|
|
path: 'admin',
|
|
loadComponent: () => import('./admin/admin.component').then(m => m.AdminComponent)`,
|
|
}
|
|
```
|
|
|
|
### Lazy Loading Child Routes
|
|
|
|
Use `loadChildren` to fetch a set of routes.
|
|
|
|
```ts
|
|
{
|
|
path: 'settings',
|
|
loadChildren: () => import('./settings/settings.routes'),
|
|
}
|
|
```
|
|
|
|
## Injection Context and Lazy Loading
|
|
|
|
Loader functions run within the **injection context** of the current route. This allows you to call `inject()` to make context-aware loading decisions.
|
|
|
|
```ts
|
|
{
|
|
path: 'dashboard',
|
|
loadComponent: () => {
|
|
const flags = inject(FeatureFlags);
|
|
return flags.isPremium
|
|
? import('./premium-dashboard')
|
|
: import('./basic-dashboard');
|
|
},
|
|
}
|
|
```
|
|
|
|
## Recommendation
|
|
|
|
- Use **Eager Loading** for the primary landing pages.
|
|
- Use **Lazy Loading** for all other feature areas to keep the initial bundle small.
|