jQuery.sap.require是如何工作的?

时间:2013-10-08 12:37:20

标签: sap sapui5

每次调用jQuery.sap.require("someLibrary")时,SAPUI5都会加载库吗? 例如,如果我在我的应用程序中的多个模块中调用上述语句,那么“someLibrary”也会多次加载吗?

4 个答案:

答案 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*/) {
  // ...
});

Asynchronification of module dependency
来源:Arnd vom Hofe的Asynchronify Your App

jQuery.sap.require相同,sap.ui.require也只加载模块一次,因为两个API在内部调用名为requireModule的同一函数,其中模块被加载{{ 3}}

同步XHR不仅会被网络平台弃用,也会被用户很快弃用。

depending on its state
来源:PeterMüßig的Deprecation of Sync XHR

更新jQuery.sap.require的使用为UI5 EvolutionjQuery.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调用成功后,它将库名称设置为关联数组中的键。