我已尝试阅读上述SAPUI5文档,但我无法清楚地了解其用法。另外sap.ui.localResources()
和jQuery.sap.registerModulePath()
之间的区别是什么?何时使用什么?
如果有人可以用一个简单的例子来解释它将会非常有帮助。我们还可以使用jQuery.sap.registerModulePath()
来加载mockData吗?
答案 0 :(得分:8)
如果您在bootstrap config或app 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] 相同。
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"
然后
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
,命名空间中的点(如果有)替换为"/"
。