Angular Lazy Loading

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Angular Lazy Loading相关的知识,希望对你有一定的参考价值。

参考技术A Angular CLI: 8.3.25
Node: 10.14.0
OS: win32 x64
Angular: 8.2.14

ng new customer-app --routing

ng generate module customers --route customer-list --module app.module

在Shell中实现延迟加载(Lazy Loading)

很多高级编程语言都内置支持Lazy Loading(延迟加载)特性,因为这一特性具有普遍的适用场景,遗憾的是在Shell中并不具备这一特性。考虑这样一种场景:在一段Shell脚本中存在一个变量A,其值是通过一个命令行动态获取的(例如CLI客户端和服务器/API交互之后方可得到),如果每次获取变量A都通过CLI发起一次远程请求显然不够明智,脚本执行效率也会变慢。所以可以考虑让变量A成为全局变量,在初次调用时发起一次远程请求获得变量A的值并赋予A即可。但是,脚本中会大量引用变量A,且脚本封装了大量功能单一的函数,调用顺序和时机都会因参数不同而动态调整,所以无法静态确定变量A的初始化时机。此时,使用延迟加载就可以完美地规避变量A的初始化时机问题。

https://github.com/bluishglc/ranger-emr-cli-installer/blob/master/bin/emr.sh中的getEmrMasterNodes函数为例:

getEmrMasterNodes() 
    if [[ "$EMR_MASTER_NODES[*]" = "" ]]; then
        masterInstanceGroupId=$(getMasterInstanceGroupId)
        EMR_MASTER_NODES=($(getNodes "$masterInstanceGroupId"))
    fi
    echo "$EMR_MASTER_NODES[@]"

这是一个非常好的延迟加载实现,EMR_MASTER_NODES是一个全局变量,但是脚本中除了该函数之外,不会有任何地方直接读取它,而是通过这个封装的函数getEmrMasterNodes来读取EMR Master Nodes,因为getEmrMasterNodes函数封装一个Lazy Loading的逻辑,确保EMR_MASTER_NODES只会被加载一次。在所有需要使用EMR Master Nodes的地方,统一使用$(getEmrMasterNodes)方式来获取,例如这样:

for masterNode in $(getEmrMasterNodes); do
    ....
done

以上就是在Shell中实现延迟加载的一个非常生动的场景和参考!

以上是关于Angular Lazy Loading的主要内容,如果未能解决你的问题,请参考以下文章

[Angular] Show a Loading Indicator for Lazy Routes in Angular

[Angular 2] Keynote: Lazy Routing -- NGCONF

Angular 4 Lazy loading with named router-outlet 不起作用

在 Angular 4 延迟加载中用模块名称替换块名称

踩坑记录——React.lazy

v-mode 双向数据绑定