默认情况下,Angular 6/7使用急切/惰性加载?
正如标题所述,我们是否需要手动实现模块的延迟加载,还是Angular 6/7默认情况下实现了延迟加载?当您构建应用程序(使用ng build)时,它会将其捆绑到几个*.js脚本文件中,并将这些脚本文件的引用添加到index.html文件中。这些是部署到后端服务器的文件 当用户访问您的站点(www.yoursite.com)时,它会找到承载该站点的服务器,并提取index.html文件和包含所有代码的所有引用脚本文件。然后将该代码加载到浏览器中 延迟加载涉及到将应用程序捆绑到其他捆绑包中,以便在index.html文件关闭时不会将所有应用程序都拉下来。这将改进用户页面的“首次加载”。然后,“按需”(即当用户访问延迟加载路径上的路由时)或在初始加载后在后台异步拉取其他捆绑包 默认情况下,Angular不执行延迟加载。这是你定义的东西 首先,将应用程序划分为角度模块。延迟加载由模块定义。每个模块定义一组相关组件、指令和管道 然后使用特定的语法,使用路由配置中的语法延迟加载这些模块,如下所示:默认情况下,Angular 6/7使用急切/惰性加载?,angular,angular6,angular7,Angular,Angular6,Angular7,正如标题所述,我们是否需要手动实现模块的延迟加载,还是Angular 6/7默认情况下实现了延迟加载?当您构建应用程序(使用ng build)时,它会将其捆绑到几个*.js脚本文件中,并将这些脚本文件的引用添加到index.html文件中。这些是部署到后端服务器的文件 当用户访问您的站点(www.yoursite.com)时,它会找到承载该站点的服务器,并提取index.html文件和包含所有代码的所有引用脚本文件。然后将该代码加载到浏览器中 延迟加载涉及到将应用程序捆绑到其他捆绑包中,以便在i
{
path: 'products',
loadChildren: './products/product.module#ProductModule'
},
Angular然后将每个延迟加载的模块捆绑到自己的脚本文件中,与index.html文件中引用的脚本分开
您可以在此处找到更多信息:除非另有规定,否则默认情况下,Angular将使用即时加载 要实现延迟加载,需要为
RouterModule
指定以下内容:
loadChildren
而不是component
的路由配置对象。分配给它的值将是延迟加载模块的相对路径,后跟#
,后跟模块的名称forChild
,而不是forRoot
这里有一个实现延迟加载的方法。好的,我想我明白了,但是如果我错了,请纠正我。延迟加载模块与延迟加载组件相同吗?还是完全不同?或者我们根本不能延迟加载组件?我对Angular是个新手,所以我试着对这些东西了如指掌。@henry,模块本质上是组件、指令、管道等的容器。延迟加载模块最终会延迟加载已注册的组件(添加到
@NgModule
的声明数组中)在模块上。我增强了我的答案,以便更详细地解释。