Sapui5 是否真的需要使用“函数”侦听全局初始化事件;“附件”;功能?

Sapui5 是否真的需要使用“函数”侦听全局初始化事件;“附件”;功能?,sapui5,Sapui5,我在许多文章中读到,“监听全局init事件是一种很好的做法,以便仅在触发事件后触发应用程序逻辑”。但我尝试了其他方法,仍然没有问题发生。当我选中“网络”选项卡“全部”时,不管代码的位置如何,都会首先加载核心库。然后加载依赖于库的代码 我试图寻找我的答案,但没有得到一个明确的答案。我尝试使用我编写的示例代码来检查它。但是没有成功 宠物 var oImage2=新的sap.m.Image({ src:“img/cat_sad.jpg”, 装饰性:假, alt:“悲伤的猫” }); oImage2.

我在许多文章中读到,“监听全局init事件是一种很好的做法,以便仅在触发事件后触发应用程序逻辑”。但我尝试了其他方法,仍然没有问题发生。当我选中“网络”选项卡“全部”时,不管代码的位置如何,都会首先加载核心库。然后加载依赖于库的代码

我试图寻找我的答案,但没有得到一个明确的答案。我尝试使用我编写的示例代码来检查它。但是没有成功


宠物
var oImage2=新的sap.m.Image({
src:“img/cat_sad.jpg”,
装饰性:假,
alt:“悲伤的猫”
});
oImage2.地点(“内容”);
警报(“不同的脚本标签”);
sap.ui.getCore().attachInit(函数()){
警报(“内部附件”);
var oImage1=新的sap.m.Image({
src:“img/dog_sad.jpg”,
装饰性:假,
alt:“悲伤的狗”
});
oImage1.地点(“内容”);
});
警报(“外部附件”);
我想知道,如果浏览器已经为我们相应地对请求进行了优先级排序,为什么我们被告知要遵循此良好做法?

这不仅是一个“良好做法”,而且是绝对必要的,以便启用

激活模块的异步加载需要侦听
init
事件。否则,应用程序将崩溃,因为您试图从
sap.m
访问
Image
,尽管该库尚未加载:


var oImage2=new sap.m.Image(/*…*/);//未捕获类型错误:无法读取未定义的属性“Image”!

如果您想知道为什么异步加载很重要,请比较以下两种情况:

1.不收听
init
(不可能有aync):

  • 依赖库和其他模块按顺序逐个检索
  • 它使用已弃用的
  • 当应用程序加载时,浏览器通常会冻结
  • 用户通常需要等待更长的时间,直到他们看到一些东西
2.使用async(需要侦听
init
):

  • 并行异步检索文件
  • 没有冻结行为。
取决于同步,XHR是而不是经得起未来考验的,它使应用程序速度大大降低。随着UI5越来越好,并准备进一步改进,请继续遵循最佳实践,以便与UI5一起“发展”