默认情况下,Angular 6/7使用急切/惰性加载?

默认情况下,Angular 6/7使用急切/惰性加载?,angular,angular6,angular7,Angular,Angular6,Angular7,正如标题所述,我们是否需要手动实现模块的延迟加载,还是Angular 6/7默认情况下实现了延迟加载?当您构建应用程序(使用ng build)时,它会将其捆绑到几个*.js脚本文件中,并将这些脚本文件的引用添加到index.html文件中。这些是部署到后端服务器的文件 当用户访问您的站点(www.yoursite.com)时,它会找到承载该站点的服务器,并提取index.html文件和包含所有代码的所有引用脚本文件。然后将该代码加载到浏览器中 延迟加载涉及到将应用程序捆绑到其他捆绑包中,以便在i

正如标题所述,我们是否需要手动实现模块的延迟加载,还是Angular 6/7默认情况下实现了延迟加载?

当您构建应用程序(使用ng build)时,它会将其捆绑到几个*.js脚本文件中,并将这些脚本文件的引用添加到index.html文件中。这些是部署到后端服务器的文件

当用户访问您的站点(www.yoursite.com)时,它会找到承载该站点的服务器,并提取index.html文件和包含所有代码的所有引用脚本文件。然后将该代码加载到浏览器中

延迟加载涉及到将应用程序捆绑到其他捆绑包中,以便在index.html文件关闭时不会将所有应用程序都拉下来。这将改进用户页面的“首次加载”。然后,“按需”(即当用户访问延迟加载路径上的路由时)或在初始加载后在后台异步拉取其他捆绑包

默认情况下,Angular不执行延迟加载。这是你定义的东西

首先,将应用程序划分为角度模块。延迟加载由模块定义。每个模块定义一组相关组件、指令和管道

然后使用特定的语法,使用路由配置中的语法延迟加载这些模块,如下所示:

  {
    path: 'products',
    loadChildren: './products/product.module#ProductModule'
  },
Angular然后将每个延迟加载的模块捆绑到自己的脚本文件中,与index.html文件中引用的脚本分开


您可以在此处找到更多信息:

除非另有规定,否则默认情况下,Angular将使用即时加载

要实现延迟加载,需要为
RouterModule
指定以下内容:

  • 带有
    loadChildren
    而不是
    component
    的路由配置对象。分配给它的值将是延迟加载模块的相对路径,后跟
    #
    ,后跟模块的名称

  • 延迟加载的模块还应该在其中实现一个路由模块,在那里,它应该调用
    forChild
    ,而不是
    forRoot

  • Angular的官方文档中提供了一个非常好的工具,您可以按照它来实现模块的延迟加载


    这里有一个实现延迟加载的方法。

    好的,我想我明白了,但是如果我错了,请纠正我。延迟加载模块与延迟加载组件相同吗?还是完全不同?或者我们根本不能延迟加载组件?我对Angular是个新手,所以我试着对这些东西了如指掌。@henry,模块本质上是组件、指令、管道等的容器。延迟加载模块最终会延迟加载已注册的组件(添加到
    @NgModule
    声明
    数组中)在模块上。我增强了我的答案,以便更详细地解释。