[Angular2 Router] Preload lzay loading modules
2024-08-31 19:41:05
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
],
最新文章
- 手动使用sql*plus创建Oracle数据库
- 10月28日PHP基础知识测试题
- js实现div层缓慢收缩与展开的方法
- ion-scroll 滚动框
- [转载]javascript创建对象的几种方式
- NOR Flash擦写和原理分析 (二)
- Unity3D之Assetbundle
- [Android开发常见问题-14] Unexpected namespace prefix ";abc"; found for tag SomeThing
- php-app开发接口加密
- loadrunner常用函数总结
- .net解决js访问服务器端,跨域访问的问题
- 【转】一个小工具类,利用shareObject把数据缓存
- 我的three.js学习记录(一)
- Loadrunner 11 中Run-Time Setting详细参数说明
- PJSUA2开发文档--第三章 PJSUA2高级API
- js 数字随机滚动(数字递增) 每日凌晨回到原点,重新计算
- JavaScript中的原型链原理
- html 框架 內聯框架
- XML模块(二十四)
- ERP出库审核业务(四十四)