如何在 UI5 1.38 中重用另一个应用程序的组件?
How to reuse a component from another application in UI5 1.38?
环境
框架:SAPUI5 V1.38.39
IDE : SAP 网络 IDE
问题
我想在另一个应用程序中使用 SAPUI5 应用程序,为此我找到了以下资源:https://blogs.sap.com/2017/04/05/sapui5-how-to-reuse-parts-of-a-sapui5-application-in-othermultiple-sapui5-applications/
我想重复使用另一个应用程序的代码
in component.js 在初始化中我使用了:
var sPath = sHostUrl.includes("webidetesting") ? "https://gtyext.net" : sHostUrl;
jQuery.sap.registerModulePath("ztntapp", `${sPath}/sap/bc/ui5_ui5/sap/ztntapp/`);
在我看来 :
<core:ComponentContainer
name="ztntapp"
manifestFirst="true"
component="ztntapp">
</core:ComponentContainer>
在 neo-app.json
{
"path": "/sap/bc/ui5_ui5/sap/ztntapp/",
"target": {
"type": "destination",
"name": "gtyext_net",
"entryPath": "/sap/bc/ui5_ui5/sap/ztntapp/"
},
"description": "namespace.tntapp Resources"
}
来自重复使用的应用程序的代码
在component.js
sap.ui.define([
"sap/ui/core/UIComponent",
"sap/ui/Device",
"./model/models"
], function (UIComponent, Device, models) {
"use strict";
return UIComponent.extend("TrackAndTrace.ztntapp.Component", {
metadata: {
manifest: "json"
},
init: function () {
[...]
},
[...]
});
});
在 neo-app.json 中(它是通过 SAP WebIDE 创建的默认值):
{
"welcomeFile": "/webapp/index.html",
"routes": [
{
"path": "/resources",
"target": {
"type": "service",
"name": "sapui5",
"entryPath": "/resources",
"version": "1.38.45"
},
"description": "SAPUI5 Resources"
},
{
"path": "/test-resources",
"target": {
"type": "service",
"name": "sapui5",
"entryPath": "/test-resources",
"version": "1.38.45"
},
"description": "SAPUI5 Resources"
},
{
"path": "/webapp/resources",
"target": {
"type": "service",
"name": "sapui5",
"entryPath": "/resources",
"version": "1.38.45"
},
"description": "SAPUI5 Resources"
},
{
"path": "/webapp/test-resources",
"target": {
"type": "service",
"name": "sapui5",
"entryPath": "/test-resources",
"version": "1.38.45"
},
"description": "SAPUI5 Test Resources"
}
],
"sendWelcomeFileRedirect": true
}
错误信息
Uncaught Error: failed to load 'ztntapp/Component.js' from
https://webidetesting278-a392f.dispatcher.hana.ondemand.com/sap/bc/ui5_ui5/sap/ztntapp/Component.js:
Error: failed to load 'TrackAndTrace/ztntapp/model/models.js' from
resources/TrackAndTrace/ztntapp/model/models.js
使用 neo-app.json 的点数:
- 应用程序“ztntapp”本身在该应用程序之外工作
- component.js 的路径是 https://webidetesting278-a392f.dispatcher.hana.ondemand.com/sap/bc/ui5_ui5/sap/ztntapp/Component.js however the path for model somehow become https://webidetesting278-a392f.dispatcher.hana.ondemand.com/webapp/resources/TrackAndTrace/ztntapp/model/models.js(我不确定为什么是“webapp/resources”)
- https://webidetesting278-a392f.dispatcher.hana.ondemand.com/sap/bc/ui5_ui5/sap/ztntapp/model/models.js 找到了,应该从这里加载资源而不是 /webapp/resources/TrackAndTrace/ 但我不知道该怎么做
其他研究
- 有了neo-app.json文件,问题是定位资源
从“ztntapp”,我看到还有一个
jQuery.sap.registerResourcePath 但我不确定如何使用它
这种情况
试试这个:
jQuery.sap.registerModulePath("ztntapp", "/sap/bc/ui5_ui5/sap/ztntapp")
而不是
jQuery.sap.registerModulePath("ztntapp", ${sPath}/sap/bc/ui5_ui5/sap/ztntapp/
)
同时检查这个 link :
https://answers.sap.com/questions/668485/ui5-failed-to-load-componentjs-while-using-compone.html
在您的第一个应用程序(主应用程序)中,请使用 manifest.json 添加组件用法,而不是 Component.js 中的 jQuery.sap.registerModulePath
:
"componentUsages": {
"ztntapp": {
"name": " TrackAndTrace.ztntapp",
"settings": {},
"componentData": {},
"lazy": true
}
}
然后你需要调整你的主应用 neo-app.json 以启用 运行 配置 以达到你的第二个应用(重复使用应用)
"routes": [
{
"path": "/webapp/resources/TrackAndTrace/ztntapp",
"target": {
"type": "application",
"name": "ztntapp"
}
},
{
"path": "/resources/TrackAndTrace/ztntapp",
"target": {
"type": "application",
"name": "ztntapp"
}
},
然后对于结果应用程序:部署您的应用程序,使其在 SAP WebIDE Fullstack 工作区中注册。
然后对于 WebIDE 中的主应用程序,选择 运行 > 运行 配置 > 添加配置 > 运行 作为 Web 应用程序 > 高级设置 标记首先使用我的工作区,然后按获取资源版本。在下面的列表中,您应该会在 Resources Name 下看到您的重用应用程序:
环境
框架:SAPUI5 V1.38.39
IDE : SAP 网络 IDE
问题
我想在另一个应用程序中使用 SAPUI5 应用程序,为此我找到了以下资源:https://blogs.sap.com/2017/04/05/sapui5-how-to-reuse-parts-of-a-sapui5-application-in-othermultiple-sapui5-applications/
我想重复使用另一个应用程序的代码
in component.js 在初始化中我使用了:
var sPath = sHostUrl.includes("webidetesting") ? "https://gtyext.net" : sHostUrl;
jQuery.sap.registerModulePath("ztntapp", `${sPath}/sap/bc/ui5_ui5/sap/ztntapp/`);
在我看来 :
<core:ComponentContainer
name="ztntapp"
manifestFirst="true"
component="ztntapp">
</core:ComponentContainer>
在 neo-app.json
{
"path": "/sap/bc/ui5_ui5/sap/ztntapp/",
"target": {
"type": "destination",
"name": "gtyext_net",
"entryPath": "/sap/bc/ui5_ui5/sap/ztntapp/"
},
"description": "namespace.tntapp Resources"
}
来自重复使用的应用程序的代码
在component.js
sap.ui.define([
"sap/ui/core/UIComponent",
"sap/ui/Device",
"./model/models"
], function (UIComponent, Device, models) {
"use strict";
return UIComponent.extend("TrackAndTrace.ztntapp.Component", {
metadata: {
manifest: "json"
},
init: function () {
[...]
},
[...]
});
});
在 neo-app.json 中(它是通过 SAP WebIDE 创建的默认值):
{
"welcomeFile": "/webapp/index.html",
"routes": [
{
"path": "/resources",
"target": {
"type": "service",
"name": "sapui5",
"entryPath": "/resources",
"version": "1.38.45"
},
"description": "SAPUI5 Resources"
},
{
"path": "/test-resources",
"target": {
"type": "service",
"name": "sapui5",
"entryPath": "/test-resources",
"version": "1.38.45"
},
"description": "SAPUI5 Resources"
},
{
"path": "/webapp/resources",
"target": {
"type": "service",
"name": "sapui5",
"entryPath": "/resources",
"version": "1.38.45"
},
"description": "SAPUI5 Resources"
},
{
"path": "/webapp/test-resources",
"target": {
"type": "service",
"name": "sapui5",
"entryPath": "/test-resources",
"version": "1.38.45"
},
"description": "SAPUI5 Test Resources"
}
],
"sendWelcomeFileRedirect": true
}
错误信息
Uncaught Error: failed to load 'ztntapp/Component.js' from https://webidetesting278-a392f.dispatcher.hana.ondemand.com/sap/bc/ui5_ui5/sap/ztntapp/Component.js: Error: failed to load 'TrackAndTrace/ztntapp/model/models.js' from resources/TrackAndTrace/ztntapp/model/models.js
使用 neo-app.json 的点数:
- 应用程序“ztntapp”本身在该应用程序之外工作
- component.js 的路径是 https://webidetesting278-a392f.dispatcher.hana.ondemand.com/sap/bc/ui5_ui5/sap/ztntapp/Component.js however the path for model somehow become https://webidetesting278-a392f.dispatcher.hana.ondemand.com/webapp/resources/TrackAndTrace/ztntapp/model/models.js(我不确定为什么是“webapp/resources”)
- https://webidetesting278-a392f.dispatcher.hana.ondemand.com/sap/bc/ui5_ui5/sap/ztntapp/model/models.js 找到了,应该从这里加载资源而不是 /webapp/resources/TrackAndTrace/ 但我不知道该怎么做
其他研究
- 有了neo-app.json文件,问题是定位资源 从“ztntapp”,我看到还有一个 jQuery.sap.registerResourcePath 但我不确定如何使用它 这种情况
试试这个:
jQuery.sap.registerModulePath("ztntapp", "/sap/bc/ui5_ui5/sap/ztntapp")
而不是
jQuery.sap.registerModulePath("ztntapp", ${sPath}/sap/bc/ui5_ui5/sap/ztntapp/
)
同时检查这个 link : https://answers.sap.com/questions/668485/ui5-failed-to-load-componentjs-while-using-compone.html
在您的第一个应用程序(主应用程序)中,请使用 manifest.json 添加组件用法,而不是 Component.js 中的 jQuery.sap.registerModulePath
:
"componentUsages": {
"ztntapp": {
"name": " TrackAndTrace.ztntapp",
"settings": {},
"componentData": {},
"lazy": true
}
}
然后你需要调整你的主应用 neo-app.json 以启用 运行 配置 以达到你的第二个应用(重复使用应用)
"routes": [
{
"path": "/webapp/resources/TrackAndTrace/ztntapp",
"target": {
"type": "application",
"name": "ztntapp"
}
},
{
"path": "/resources/TrackAndTrace/ztntapp",
"target": {
"type": "application",
"name": "ztntapp"
}
},
然后对于结果应用程序:部署您的应用程序,使其在 SAP WebIDE Fullstack 工作区中注册。
然后对于 WebIDE 中的主应用程序,选择 运行 > 运行 配置 > 添加配置 > 运行 作为 Web 应用程序 > 高级设置 标记首先使用我的工作区,然后按获取资源版本。在下面的列表中,您应该会在 Resources Name 下看到您的重用应用程序: