为您的实用程序使用组件/库
我在这里最明显的问题是:如果您无论如何都使用组件概念,为什么您的共享代码也不是组件。组件不一定要有 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"));