【问题标题】:What exactly is Lazy Loading in Angular2?Angular2 中的延迟加载到底是什么?
【发布时间】:2016-08-19 15:12:37
【问题描述】:

我对“延迟加载”一词的理解是,当我宝贵地创建了一个长列表但一次只显示 25 个列表项时。当您向下滚动列表时,接下来的 25 个项目将通过 ajax “延迟加载”。

但是在 Angular2 的上下文中延迟加载意味着什么?

整个应用js资产不是已经交付给消费者了吗?从技术上讲,延迟加载实际上做了什么?

我无法理解这些好处,因为所有代码都已经存在,并已加载到消费者浏览器中。我们通过延迟加载组件获得了什么?

我找到的所有资源都主要解释了如何延迟加载。从技术角度来看,似乎没有人准确定义它的作用。

【问题讨论】:

    标签: angular


    【解决方案1】:

    你提到的是延迟加载数据。

    Angular 中的延迟加载与代码有关。 构建工具根据路由器的延迟加载配置将构建输出拆分为多个文件。

    只有在实际需要延迟加载模块的组件时,因为选择了必须加载此类组件的路由,才会最终将该代码文件加载到浏览器中。

    主要好处是初始加载(首次渲染的时间)更短,如果应用程序的某些部分通常是用户不需要的,则浏览器需要的内存更少。

    【讨论】:

    • 所以基本上我们总是希望在大型 Angular2 应用程序中延迟加载,因为我们不想加载所有模块组件?我说的对吗?
    • 如果您的意思是“总是”希望 some 模块延迟加载,那么可以。总是延迟加载所有内容通常不是正确的方法。如何将应用程序拆分为模块以及延迟加载哪些模块需要考虑很多因素。我认为主要标准通常是 - 初始加载(直到用户看到开始页面)应该尽可能快,以后的导航也应该很快,也许应用程序的某些部分可以延迟加载,以便用户看到已经有主要内容,然后添加其他内容。
    • 换句话说,如果我想加载 init 上的三个组件,我会加载它们,而其他要通过路由访问的组件保持卸载状态,直到我导航到它们?
    • 是的,例如。在这种情况下,最简单的方法是让路由器进行延迟加载。为此,您需要将组件拆分为一个单独的(惰性)模块(除了您希望最初加载的 3 个),然后指示路由器为特定路由加载此惰性模块。
    猜你喜欢
    • 2010-09-07
    • 2011-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-03
    • 2016-08-12
    • 2017-02-03
    相关资源
    最近更新 更多