一个应用程序具有多个 component.js:如何加载共享模块?

2024-03-30

我们有一个 SAPUI5 应用程序,其中定义了多个组件(即多个 Component.js 文件),每个组件都在各自的子文件夹中作为应用程序根目录的直接子文件夹。下图显示了项目结构:

组件 1 指定为com.test.component1,分量 2 为com.test.component2。共享代码位于root/shared并定义为每个组件的控制器中的依赖项。

共享/Utils.js:

sap.ui.define([], function () {
    "use strict";

    return {...};
};

组件1/控制器/Controller1.js:

sap.ui.define([
    "sap/ui/core/mvc/Controller",
    "test/shared/Utils"
], function (BaseController, Utils) {
    "use strict";
    // controller code

});

在本地(或在 WebIDE 中)运行 index.html 文件,这一切都有效,但是当我们尝试将不同的组件集成到 Fiori Launchpad 中时,找不到共享资源(它尝试从 /resources/shared 加载它们)。我们相信这与data-sap-ui-resourceroots='{"com.test": ""}为引导定义,但在 Component.js 或 manifest.json 文件中缺失。

注册资源路径的正确方法是什么com/test/shared对于各个组件?


为您的实用程序使用组件/库

我在这里最明显的问题是:如果您无论如何都使用组件概念,为什么您的共享代码也不是组件。组件不一定要有 UI,这就是为什么有一个UIComponent和一个简单的Component继承自。您只需将其作为组件 1/组件 2 的依赖项加载,如下所示:

... 
return Component.extend("com.test.Component1", {
  metadata: {
    name: "Component1",
    dependencies: {
      libs: [ "sap.m" ],
      components: [ "test.shared" ]
  },
...

如果使用组件不适合您,您还可以将实用程序打包为库。您可能想查看grunt-openui5 https://github.com/SAP/grunt-openui5这可以帮助您构建一个。

不使用组件/库概念加载外部文件

无论如何,在引导程序上定义资源根类似于调用

jQuery.sap.registerModulePath("test.shared", "/path/to/your/source");

您可以在两个组件 init 中注册共享模块的模块路径。您可能必须在那里使用绝对路径,因为根据执行上下文(启动板与独立),相对路径可能会有所不同。

您可以像这样使路径“相对”:

jQuery.sap.registerModulePath("test.shared", jQuery.sap.getModulePath("com.test.Component1") +"/../shared);

此外,如果您希望共享资源也从缓存清除中受益,您可能需要随后使用它:

sap.ui.core.AppCacheBuster.register(jQuery.sap.getModulePath("test.shared"));
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

一个应用程序具有多个 component.js:如何加载共享模块? 的相关文章

  • 如何在UI5中动态创建OData V2实体路径?

    我想更新用 OData 服务填充的表 我正在使用这种方法 oModel update Products 999 data 我将选定的索引存储在变量中 myVar1 并且我需要将该变量传递给路径字符串 问题是Products 999 这是与硬
  • 从单个 JS 文件引导 OpenUI5

    OpenUI5 文档建议使用从 CDN 加载的库开始工作 不幸的是 这种方法意味着在启动时加载级联 4 个脚本 sap ui core js sap ui core library js 为什么 SAP M library js sap u
  • 为什么 onBeforeFirstShow 有效?

    我一直在学习主从演示 下面是一个片段Master controller js onInit function this getView addEventDelegate onBeforeFirstShow function this get
  • 如何在 SAPUI5 的控制器中使用内部化 i18n?

    谁能解释一下如何使用i18n中的文本setValueStateText控制器中的方法 oTP setValueStateText i18n gt co Maximal 60 h 对话框中的错误消息仅显示 i18n gt co Maximal
  • Sapui5:如何在smarttable中设置初始排序顺序?

    我有一张智能桌子 如何在智能表的一列或多列上设置初始排序顺序
  • 如何从表中删除行

    这个问题是这个问题的后续问题 在 SAPUI5 表中添加新行的按钮 在我的新场景中 我在表格的第一列中添加了一个 删除 按钮 同样 JSON 文件如下所示 Invoices ProductName Pineapple Quantity 21
  • SAPUI5 为 TreeTable/空行创建 JSON

    我想从 JSON 请求创建 SAPUI TreeTable 目前我的输出如下所示 如您所见 每个节点都包含一个空行 gt 我不知道这是从哪里来的 我不想让这些空行行 我的表定义 Create an instance of the table
  • 智能字段注释 - valuehelp 下拉菜单

    我有一个值帮助字段 并且只想在下拉列表中查看说明 而不是代码 选择后 想要将代码存储在另一个处于隐藏模式的字段中 为此 我定义了以下注释
  • 带参数的路由不起作用

    我正在关注tutorial https openui5 hana ondemand com docs guide 2366345a94f64ec1a80f9d9ce50a59ef html在这里 我陷入了带参数的路由 该示例应用程序未在我的
  • SAPUI5 视图,访问面板标题的模型项

    我有以下模型 categories 1 0 1 categoryDesc Production 2 0 1 2 categoryDesc Documentation 还有下面的景色
  • 获取 SAPUI5 v2 ODataModel 的服务元数据?

    我尝试获取 sapui5 v2 odata 模型的服务元数据 代码 var oModel new sap ui model odata v2 ODataModel someServiceURL var oMetadata oModel ge
  • 用于突出显示表格行或列的替代颜色

    表格替代颜色为开发指南中建议 https openui5 hana ondemand com 1 34 0 docs guide 7ec7885ce75c4237aadc67d83f64b66e html不起作用 salesarea tbo
  • sap.m.Input 与 type="Number" 的值绑定会清除输入字段

    这是一个后续问题如何将整数输入值绑定到滑块 https stackoverflow com questions 57930668 how to bind integer input value to slider 我发现演示解决方案在这个答
  • 无法使用数据绑定设置过滤器值?

    这个问题是通过深入研究原始问题而产生的 如何根据表行数据在表下拉列表中设置过滤器 https stackoverflow com questions 25381772 how to set filter in table dropdown
  • 箭头函数中的“未捕获类型错误:this._isDateType 不是函数”

    每次我都会遇到找不到函数定义的类型错误 代码如下 return BaseController extend ch micarna weightprotocol controller Calendar onInit function cons
  • SAPUI5 - Sap.m.RadioButton 值字段?

    sap m RadioButton已经只有Text属性并且没有Value属性 虽然我可以通过使用自定义数据来解决这个问题 但我是否遗漏了什么 sap ui commons RadioButton有一个key场地 另外 将值绑定到单选按钮组的
  • SAPUI5自定义伪事件

    在 SAPUI5 OpenUI5 中定义自定义伪事件的最佳实践是什么 例如 假设我想在按住扩展的 sap m Button 几秒钟时触发一个事件 我不确定是否还有任何 最佳实践 我真的认为只有 一种 实践 但我渴望学习任何其他做法 所以如果
  • 使用 XML-View 将浏览器事件附加到控件

    我的 REST 服务向我发送了大量数据 每个属性都包含value and a help 包含字段属性的详细描述的属性 好的 我在 JSONModel 中有数据 具有值和帮助的属性列表 并且我使用数据绑定XML https openui5 h
  • SAPUI5 等待延迟对象 // 等待 .done() 函数

    我知道有几个线程对此进行讨论 但我认为在 SAPUI5 上下文中没有线程回答有关 SAPUI5 中的延迟 同步调用的一般主题 在我的控制器中我得到 test function var dfd Deferred var sServiceUrl
  • 更改 WizardStep 按钮文本

    如何重命名每个按钮的文本 默认 步骤 1 到 步骤 n WizardStep 对于整个Wizard完成按钮的文本可以通过设置属性来设置finishButtonText 但没有类似的属性WizardStep 没有标准的方法 这是我实现它的方法

随机推荐

  • Xcode 多个静态库和重复符号

    我正在开发一个 iPad 应用程序 它依赖于两个静态实用程序库 libBFSDK 和 libBetfair Platform 这两个静态库都包含 AFNetworking 当我尝试在 iPad 应用程序中包含两个静态库时 我收到如下链接错误
  • Docker-Compose 挂载卷覆盖主机文件

    我正在从 CMS 装载一个目录 其中包含 Docker 容器内的内容文件 安装绝对有效 CMS 获得了一些基本文件 这些文件在构建过程中被复制到容器中的已安装文件夹中 然后它将被挂载到主机上的某个目录中 现在容器中的文件也位于主机上 我可以
  • HDBSCAN Python 选择簇数

    是否可以在Python中的HDBSCAN算法中选择簇的数量 或者唯一的方法是使用输入参数 例如 alpha min cluster size Thanks UPDATE 这是使用 fcluster 和 hdbscan 的代码 import
  • 角度过滤器:如何进行预过滤,以便角度过滤器仅考虑整个数据对象的一部分

    我有一个包含多个列的大型数据表 从 json api 获取数据 并且想要实现多个过滤器 执行以下操作 选择应考虑哪个数据列的选项 包含 thead 选项的下拉列表 my columnFilter 进而 用于过滤特定数据部分的输入字段 my
  • 如何在C# TBB中从类别名称中获取关键字?

    我正在尝试使用 C TBB 获取类别中存在的关键字 以使用以下 DWT TBB 中的输出 为此 我有一个带有类别字段的组件 我正在尝试编写以下 C TBB 来获取关键字值 try string className package GetVa
  • 转换为 UI 的记录器条目随着时间的推移停止更新

    我有一个 javafx concurrent Task 在后台运行一些代码并使用 java util logging Logger 提供有关其状态的信息 我需要在主线程的 UI 中显示此日志条目 我怎样才能做到这一点 这是我制作的一个简单的
  • 在 Perl 中比较日期的最佳方法是什么?

    我需要读取 2 个日期并进行比较 一个日期是 current date 年 月 日 另一个是由业务逻辑决定的 然后我需要比较两个日期 看看一个日期是否早于另一个日期 我怎样才能在 Perl 中做同样的事情 我正在寻找好的文档 但我在 Per
  • Android Studio 更新后 Gradle 项目刷新失败

    这是输出 11 57 04 AM Gradle KeddreaderProject 项目刷新失败 原因 org gradle internal service ServiceLocator Ljava lang ClassLoader V
  • 将集合转换为表达式 Maple/ 将前缀更改为固定表达式

    如何将下面的集合转换为表达式 Expression a b a x y can be any operator 所需输出为 result a b a x y required output 我尝试使用下面的转换函数进行转换 asString
  • 将多个 .txt 文件合并为 csv

    Python 新手 我正在尝试将多个文本文件合并为 1 个 csv 下面的例子 文件名 csv Alpha 0 0 1 0 15 0 2 0 25 0 3 文本1 txt Alpha Beta 0 10 0 2 20 0 3 30 文本2
  • Ruby Rails - 为 AJAX 调用控制器操作构建数据

    我的网站上需要一个按钮 可以将信息发送到控制器的创建操作 页面时间 它似乎有效 尽管它没有发送我指定的所有数据 可能与我无法构建数据向量有关 我已通过以下方式在我的 config routes rb 文件中提供 POST 请求post pa
  • Admob实施错误

    我在应用程序中实施 Admob 时遇到问题 这是我的 main xml
  • Java 在 ^(插入符号?)上分割不起作用,这是一个特殊字符吗?

    在Java中 我试图拆分 性格 但它无法识别它 逃跑 抛出代码错误 这是一个特殊字符还是我需要做其他事情才能让它识别它 String splitChr String fmgStrng aryToSplit split splitChr Th
  • `a = b || 的语法糖a`, `a = b && a`

    For a a b a a b 有很好的语法糖a b a b 同样经常出现的还有 a b a a b a 有没有好的语法糖或简短的方法来编写这个 a b a 可以重写为 a b if b 可以重写而无需重复a or b as x b and
  • 强制 MATLAB mmreader 或 avireader 使用不同的编解码器?

    当我需要播放 AVI 文件时 如何强制 MATLAB 函数使用不同的编解码器 我使用的是 windows7 我发现 indeo5 编解码器由于操作系统的原因无法正常工作 所有代码在 XP 上都可以正常运行 Thanks 如果您的问题是如何使
  • Rails 3 自定义操作表单

    我在 Rails 3 中将表单路由到自定义操作时遇到问题 以下是我的路由 resources photos do resources comments collection do get update states end member d
  • Delphi:解析未知结构的记录

    有没有一种方法可以获取记录并以编程方式遍历其所有字段 而无需显式执行 Record somerfield 我想要做的是一个将记录保存 加载为 INI 文件的通用函数 以便我可以从记录结构中添加或删除字段 而无需每次在记录中删除或添加字段时重
  • 是否可以在react项目中使用dotenv?

    我正在尝试设置一些环境变量 用于对 dev prod 端点进行 API 调用 密钥取决于 dev prod 等 我想知道使用 dotenv 是否有效 我已经安装了 dotenv 并且正在使用 webpack 我的 webpack 入口是ma
  • 在 Python 数据框中获取一天的一部分(早上、下午、晚上、夜晚)

    这是我的数据框 我需要根据行值的时间创建一个新列 早上 下午 晚上 晚上 这是我的代码 if prods hour lt 4 prods hour gt 8 prods session Early Morning elif prods ho
  • 一个应用程序具有多个 component.js:如何加载共享模块?

    我们有一个 SAPUI5 应用程序 其中定义了多个组件 即多个 Component js 文件 每个组件都在各自的子文件夹中作为应用程序根目录的直接子文件夹 下图显示了项目结构 组件 1 指定为com test component1 分量