zoukankan      html  css  js  c++  java
  • [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
      ],

    Github

  • 相关阅读:
    列表元素的删,添,复制
    序列的通用操作
    列排(list)排序
    列表(list)
    str的常用操作
    复制/etc/profile至/tmp/目录,用查找替换命令删除/tmp/profile文件中的行首的空白字符;在vim中设置tab缩进为4个字符
    Linux上的文件管理类命令都有那些,其中常用的使用方法及相关示例演示
    总结软连接和硬连接区别,并用实例操作
    文件的元信息有那些,分别表示什么含义,如何查看?如何修改文件的时间戳信息?
    Linux发行版的系统目录名称命名规则以及用途
  • 原文地址:https://www.cnblogs.com/Answer1215/p/5958150.html
Copyright © 2011-2022 走看看