美文网首页Angular开发集锦
angular2路由预加载

angular2路由预加载

作者: SevenLonely | 来源:发表于2017-09-25 09:18 被阅读29次

1. 实现PreloadingStrategy 类


import { PreloadingStrategy, Route } from "@angular/router";
import { Observable } from "rxjs";
/**
 * 预加载策略
 */
export class SelectivePreloadingStrategy implements PreloadingStrategy {
    preload(route: Route, load: Function): Observable<any> {
        //当路由中配置data: {preload: true}时预加载
        return route.data && route.data && route.data['preload'] ? load() : Observable.of(null);
    }

}

  • 当你在路由中配置了data: {preload: true}参数后,这里面的策略就返回一个load(),表示需要预加载,如果没有配置就不进行预加载,当然你也可以反过来,默认是预加载,

2.路由添加策略


import { NgModule }             from '@angular/core';
import { RouterModule, Routes } from '@angular/router';

import {SelectivePreloadingStrategy} from "./selective-preloading-strategy";

import { LoginComponent }      from './login/login.component';
import { MainComponent }   from './main/main.component';



/**
 * app路由
 */
const routes: Routes = [
  { path: '', redirectTo: '/login', pathMatch: 'full' },
  { 
     path: 'login',  
     component: LoginComponent
  },
  { 
     path: 'app',  
     component: MainComponent,
     loadChildren: 'app/main/main.module#MainModule',
     data: {preload: true}
  }
];

export const appRoutes=RouterModule.forRoot(routes,{preloadingStrategy: SelectivePreloadingStrategy});

3.AppModule中providers添加


/**
 * app模块
 */
@NgModule({
  imports: [
    appRoutes,
    BrowserModule,
    BrowserAnimationsModule,
    NgbModule.forRoot(),
    MainModule,
    LoginModule
  ],
  declarations: [
    AppComponent,
    ToastBoxComponent,
    ToastComponent,
    SpinComponent
  ],
  providers: [AppService,ToastService,HttpService,SpinService,SelectivePreloadingStrategy],
  exports:[ToastBoxComponent,SpinComponent],
  bootstrap: [ AppComponent ]
})
export class AppModule {}

4.路由使用


import { NgModule, OnInit } from '@angular/core';
import { RouterModule, Routes, Router } from '@angular/router';

/**
 * 主体路由
 */
const routes: Routes = [
      { path: 'home', loadChildren: 'app/home/home.module#HomeModule', data: {preload: true} },
      { path: 'demo', loadChildren: 'app/demo/demo.module#DemoModule', data: {preload: true} },
];

export const mainRoutes = RouterModule.forChild(routes);

相关文章

  • angular2路由预加载

    1. 实现PreloadingStrategy 类 当你在路由中配置了data: {preload: true}参...

  • 微信程序项目边界

    详情头部标题省略加载{懒加载,预加载,无限加载,加载中} 常见路由切换

  • angular2路由切换改变页面title

    angular2里默认切换路由或者切换组件,页面的title是不会变化的。 angular2在路由设置里提供了da...

  • Vue路由懒加载-prefetch预加载问题

    通常项目配置router的懒加载,基于webpack4+和ES6,最简单的写法是 此时文件加载按页面引入,每个页面...

  • 预加载与智能预加载 (VIA)

    预加载与智能预加载(iOS) 网络与性能 预加载无限滚动列表Threshold惰性加载智能预加载 总结 前两次的分...

  • 图片预加载

    背景 利用图片的预加载技术获得更好的用户体验 什么是有序预加载和无序预加载 jQuery插件的写法 图片预加载,预...

  • js-事件委托&图片预加载

    事件委托 图片预加载 吸顶条 图片预加载

  • 收藏的博客链接

    1 - 粒子动画效果2 - 预加载与智能预加载策略

  • react路由基础配置

    1、根据路径加载对应页面内容2、路由跳转3、路由懒加载4、嵌套路由(子路由)5、路由管理6、路由跳转权限校验 1、...

  • 23.路由的懒加载

    路由的懒加载:就是需要的时候在加载 这种写法就能实现路由的懒加载

网友评论

    本文标题:angular2路由预加载

    本文链接:https://www.haomeiwen.com/subject/yjdrextx.html