Angular 在角载荷作用下,采用预加载策略可以增加初始加载时间

Angular 在角载荷作用下,采用预加载策略可以增加初始加载时间,angular,lazy-loading,preloading,Angular,Lazy Loading,Preloading,我在应用程序中使用延迟加载。但我的特色模块在我访问该路线后需要时间加载。所以为了减少加载时间,我使用了角度预加载策略。但由于应用程序的初始加载时间增加 理想情况下,功能模块应在后台加载,且不应增加初始加载时间 对于预加载,我将此代码添加到路由模块中 RouterModule.forRoot(routes, {preloadingStrategy: PreloadAllModules}) 有什么问题吗?即使我有同样的问题,我还是通过删除预加载策略来解决了这个问题,而不是那个问题 我让加载器在ap

我在应用程序中使用延迟加载。但我的特色模块在我访问该路线后需要时间加载。所以为了减少加载时间,我使用了角度预加载策略。但由于应用程序的初始加载时间增加

理想情况下,功能模块应在后台加载,且不应增加初始加载时间

对于预加载,我将此代码添加到路由模块中

RouterModule.forRoot(routes, {preloadingStrategy: PreloadAllModules})

有什么问题吗?

即使我有同样的问题,我还是通过删除预加载策略来解决了这个问题,而不是那个问题 我让加载器在app.component上更改路线。ts

所以用户至少知道加载数据需要一些时间

isLoading : boolean = false;

this.router.events.subscribe((event: Event) => {
   switch(true) {
     case event instanceof NavigationStart: {
       this.isLoading = true;
       break;
     }

     case event instanceof NavigationCancel:
     case event instanceof NavigationError:
     case event instanceof NavigationEnd: {
      this.isLoading = false;
      break;
    }
     default: {

      }
   }
 })
  • 装货。。。。。。。。。。。

  • 是的。这就是预加载策略在Angular中的工作方式。无论何时预加载任何模块,它都会在加载所有急切加载和需要延迟加载的模块后在后台加载。之后,模块的预加载开始。因为所有预加载的模块都是在正常构建和开发构建(非aot构建)的情况下首先编译和加载的,这增加了当前模块的加载时间


    但是在aot构建中,这个问题不会发生,因为大部分时间都用于编译模块,而在aot构建中将跳过该模块。

    我制作了一个简短的视频,介绍如何创建自定义预加载策略-


    这是代码-

    初始加载时间增加了,是的,但是交互时间可能仍然和以前一样。所谓交互时间,你是指用户交互时间@wentjun吗?如果这是正确的,则“否”,渲染将被阻止,直到所有编译完成。编译完成后,用户就开始交互了。我明白了。。嗯,你还面临这个问题吗?我以前遇到过类似于您所面临的情况,在阅读了一些互联网博客后,我通过执行自定义加载程序策略解决了这个问题。如果你愿意,我可以在我的下一条评论上粘贴链接。对我来说,加载时间接近10秒。我不认为让用户在加载屏幕上停留10秒钟是个好主意。在所有文档中,它都说预加载将在后台加载捆绑包,而不会干扰主捆绑包。我不知道,这里出了什么问题。是的,@Khush。当我在服务器上运行aot构建时,我意识到了这一点。不会有任何新的捆绑包被加载的感觉。忘了更新这里。谢谢你写下来。将其标记为已接受。