1

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

4

4 回答 4

4

如果有人仍然考虑使用jQuery.sap.require,请注意它只发送应该避免的同步 XHR。

使用jQuery.sap.require同步的,被认为是“不好的做法”,因为web 超文本应用技术工作组不推荐使用syncXHR。(来源:模块和依赖项

相反,当前的最佳实践是使用sap.ui.defineor.require进行异步模块加载:

<!-- Enable asynchronous module loading in index.html (available since 1.58.2) -->
<script id="sap-ui-bootstrap" src="..." data-sap-ui-async="true" ...>
sap.ui.define([ // or .require
  // modules to load
], function(/* modules available once loaded */) {
  // ...
});

模块依赖的异步化
资料来源:Arnd vom Hofe 的异步应用程序

与 相同jQuery.sap.require,API也根据其内部状态sap.ui.require([/*...*/])获取模块一次。

有关更多信息,请查看模块和依赖项下的主题。


Sync XHR 不仅被 Web 平台普遍弃用,而且也将逐渐被 UI5 用一组新的 API 取代。

Sync XHR 的弃用
资料来源:Peter Muessig 的UI5 Evolution

因此,jQuery.sap.require并且jQuery.sap.declare现在已弃用

于 2017-07-24T10:16:30.600 回答
2

该库仅加载一次。您可以在 SDK https://sapui5.hana.ondemand.com/sdk/#docs/guide/ModularizationConcept.html中找到此信息

模块加载

如前所述,通过调用函数 jQuery.sap.require 来加载模块,并使用所需模块的名称。然后框架检查命名模块是否已经加载。如果是这样,该函数简单地返回。否则它会尝试同步加载和执行模块。如果这两个步骤中的任何一个失败,就会抛出异常,从而中断调用模块的执行。

于 2013-10-08T13:08:54.773 回答
1

库加载一次。这可以在 chrome 开发人员工具的网络选项卡中看到。

还要在此处查看 cevou 指出的文档:

于 2013-10-08T13:48:26.903 回答
1

当您使用某个库调用此函数时,它会检查给定库是否已加载或未使用关联数组。如果库已加载,则返回null. 如果未加载库,则使用 sjax 调用加载库,并在 sjax 调用成功后,将库名称设置为关联数组的键。

于 2016-04-15T18:43:21.350 回答