每次调用jQuery.sap.require("someLibrary")
时,SAPUI5都会加载库吗?
例如,如果我在我的应用程序中的多个模块中调用上述语句,那么“someLibrary”也会多次加载吗?
答案 0 :(得分:4)
如果有人仍然考虑使用jQuery.sap.require
,请注意它只发送应该避免的sjax请求。
使用
jQuery.sap.require
同步并被视为“不良做法”,因为Web超文本应用技术工作组的syncXHR为deprecated。 [source]
相反,目前的最佳做法是使用sap.ui.define
or .require
进行异步模块加载:
// Enabling asynchronous module loading in index.html (available since 1.58.2)
data-sap-ui-async="true" // replaces sap-ui-preload and sap-ui-xx-async
sap.ui.define([ // or .require
// modules to load
], function (/*modules available once loaded*/) {
// ...
});
来源:Arnd vom Hofe的Asynchronify Your App
与jQuery.sap.require
相同,sap.ui.require
也只加载模块一次,因为两个API在内部调用名为requireModule
的同一函数,其中模块被加载{{ 3}}
同步XHR不仅会被网络平台弃用,也会被用户很快弃用。
depending on its state
来源:PeterMüßig的
更新:jQuery.sap.require
的使用为UI5 Evolution。 jQuery.sap.declare
也是如此。
答案 1 :(得分:3)
lib只加载一次。您可以在SDK中找到此信息 https://sapui5.hana.ondemand.com/sdk/#docs/guide/ModularizationConcept.html
模块加载
如上所述,通过使用所需模块的名称调用函数jQuery.sap.require来加载模块。然后,框架检查指定的模块是否已加载。如果是这样,函数只返回。否则它会尝试同步加载和执行模块。如果这两个步骤中的任何一个失败,则抛出异常并因此中断调用模块的执行。
答案 2 :(得分:1)
库加载一次。这可以在chrome开发人员工具的网络选项卡中看到。
另请查看cevou指出的文档:
答案 3 :(得分:1)
当您使用某个库调用此函数时,它会使用关联数组检查是否加载了给定的库。如果加载了库,则返回null
。如果未加载库,则使用sjax调用加载库,并且在sjax调用成功后,它将库名称设置为关联数组中的键。