何时使用jQuery.sap.registerModulePath()作为示例?

时间:2017-09-12 08:42:14

标签: sapui5

我已尝试阅读上述SAPUI5文档,但我无法清楚地了解其用法。另外sap.ui.localResources()jQuery.sap.registerModulePath()之间的区别是什么?何时使用什么?

如果有人可以用一个简单的例子来解释它将会非常有帮助。我们还可以使用jQuery.sap.registerModulePath()来加载mockData吗?

1 个答案:

答案 0 :(得分:8)

如果您在bootstrap configapp descriptor中使用resourceRoots,那么您一直在使用jQuery.sap.registerModulePath作为每个键值对,定义在resourceRoots中,作为参数传递给该静态方法。

例如,您的index.html中可能包含以下内容:

<script id="sap-ui-bootstrap" src="..."
  data-sap-ui-resourceroots='{"my.app": "./"}'
  ...
></script>

UI5然后全局注册名称空间"my.app")作为参考说“每当解析其他模块名称时提到该名称,我应该在注册路径“在我们的案例中相对于当前"./"的{​​{1}}。

上述代码与直接调用document.location.href [1] 相同。

  • 在这里,我们可以传递用户定义的URL前缀。例如:jQuery.sap.registerModulePath("my.app", "./")而不是"../",如果项目在one hierarchy level deeper such as mockserver.html中有另一个* .html文件,则需要"./"
  • 如果我们在更深的层次结构中有一个模块,例如在custom/control/somewhere/c3/chart/中,我们可以注册另一个命名空间:"my.app.c3chart": "./custom/control/somewhere/c3/chart"然后
    • 将其用作XMLView定义中的快捷方式:
      xmlns:c3="my.app.c3chart"代替 xmlns:c3="my.app.custom.control.somewhere.c3.chart"
    • 通过在模块文件更改其层次结构级别时仅更改注册的路径来降低维护成本。命名空间"my.app.c3chart"仍可在任何地方使用。

[1]:从1.58开始,API已弃用。手动注册名称空间时,应使用API​​ sap.ui.loader.config

sap.ui.loader.config({
  paths: {
    "my/anotherApp": "https://example.com/somePath/anotherApp"
  }
});
  

sap.ui.localResources()和jQuery.sap.registerModulePath()有什么区别?

以下是source code实际执行的sap.ui.localResources的当前SAP discourages

sap.ui.localResources = function(sNamespace) {
  jQuery.sap.registerModulePath(sNamespace, "./" + sNamespace.replace(/\./g, "/"));
};

就是这样。它立即调用jQuery.sap.registerModulePath,命名空间中的点(如果有)替换为"/"

  • 我们无法传递任何用户定义的网址前缀
  • 命名空间与实际的文件夹层次结构和名称紧密耦合。
  • is deprecated此API的使用(适用于非独立应用)。
  • API参考提到此API 将过时。 {{3}}