[Angular2 Router] Preload lzay loading modules
From router v3.1.0, we have preloading system with router.
PreloadAllModules
After the init module loaded, router will preloading the rest module at the background.
const indexRoute = {path: '', redirectTo: 'home', pathMatch: 'full'}; const fallbackRoute = {path: '**', component: NotFoundComponent}; const routes = [ {path: 'legacy-url', redirectTo: '/home', pathMatch: 'prefix'}, {path: 'home', loadChildren: 'app/home/home.module', name: 'Home'}, {path: 'heros', loadChildren: 'app/heros/heros.module', name: 'Heros'}, {path: 'contact', loadChildren: 'app/contact/contact.module', name: 'Contact'}, indexRoute, fallbackRoute, ]; export default RouterModule.forRoot(routes, { useHash: true, preloadingStrategy: PreloadAllModules });
Custom Preload Strategy:
const indexRoute = {path: '', redirectTo: 'home', pathMatch: 'full'}; const fallbackRoute = {path: '**', component: NotFoundComponent}; const routes = [ {path: 'legacy-url', redirectTo: '/home', pathMatch: 'prefix'}, {path: 'home', loadChildren: 'app/home/home.module', name: 'Home'}, {path: 'heros', loadChildren: 'app/heros/heros.module', name: 'Heros', data: {preload: true}}, {path: 'contact', loadChildren: 'app/contact/contact.module', name: 'Contact', data: {preload: true}}, {path: 'message', loadChildren: 'app/message/message.module', name: 'Message'}, indexRoute, fallbackRoute, ]; export default RouterModule.forRoot(routes, { useHash: true, preloadingStrategy: PreloadSelectedModuledsList //preloadingStrategy: PreloadAllModules });
In the router config, we use :
data: {preload: true}
To tell which modue should be preloaded.
Then provide a custom loading strategy:
import {PreloadingStrategy, Route} from "@angular/router"; import {Observable} from "rxjs"; export class PreloadSelectedModuledsList implements PreloadingStrategy { preload(route: Route, load: Function): Observable<any> { return route.data.preload ? load() : Observable.of(null); } }
Last step, in the app.module.ts, inject the provider to the providers list:
providers: [ {provide: APP_BASE_HREF, useValue: '/'}, { provide: API_URL, useValue: `https://en.wikipedia.org/w/api.php?callback=JSONP_CALLBACK` }, { provide: STARWARS_BASE_URL, useValue: `https://starwars-json-server-ewtdxbyfdz.now.sh` }, PreloadSelectedModuledsList ],
分类:
Angular
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具