我有一个使用自定义应用程序特定库(sap.ui.foo)的应用程序,其中包含自定义控件,视图和控制器。
我的部署策略是从为index.html文件提供服务的同一服务器/端口提供自定义库。
我还想使用SAP的CDN加载OpenUI5库(sap.m等)。
我正在使用OpenUI5's GitHub repository附带的Grunt /节点工具。
当我在本地加载我的应用程序(没有CDN)时,它运行得很好,但速度很慢(我想这么大的下载负载)所以我试图使用CDN以期提高启动性能。 / p>
我的index.html
看起来像这样:(在@ codeworrior'回答之后编辑):
<script id="sap-ui-bootstrap"
src="https://openui5.hana.ondemand.com/resources/sap-ui-core.js"
data-sap-ui-theme="sap_bluecrystal"
data-sap-ui-libs="sap.ui.layout, sap.m, sap.ui.foo"
data-sap-ui-xx-bindingSyntax="complex"
data-sap-ui-resourceroots='{
"ns":"./",
"sap.ui.foo": "./sap/ui/foo/"
}'
>
这是我的目录结构(据我所知是&#34;标准&#34;):
src
├── foo
│ └── src
│ └── main
│ └── webapp
│ ├── index.html # start point
│ ├── resources
│ ├── test-resources
│ └── WEB-INF
├── sap.m
├── sap.ui.commons
...other sap libs...
└── sap.ui.foo
└── src
└── sap
└── ui
└── foo
└── # my controls...
并在grunt build:production
我的&#34;目标&#34;之后目录看起来像这样:
target
├── openui5-sap.m
├── openui5-sap.ui.commons
├── openui5-sap.ui.core
├── openui5-sap.ui.demokit
├── ...other sap libs...
├── openui5-sap.ui.foo
└── resources
└── sap
└── ui
└── foo
├── Bootstrap.js
├── controllers
├── controls
├── data
├── font
├── img
├── js
├── library.js
├── library-preload.json
├── models
├── tasks
├── themes
├── util.js
├── views
└── wrappers
但是,在我执行了grunt serve:target
并点击了网址http://localhost:8989/foo/之后,在Chrome的开发工具中,我得到了:
failed to preload 'sap.ui.foo.library-preload': Not Found - sap.ui.ModuleSystem
Uncaught Error: failed to load 'sap/ui/foo/library.js' from ./sap/ui/foo/library.js: 404 - Not Found
网络标签显示我正在提供CDN文件,但是我尝试在本地提供的文件(例如我的自定义lib&amp;库`js和library-preload.json)是404&#39>。
有关如何加载我的库的任何建议吗?
答案 0 :(得分:1)
如果您的库以通常的方式存储(反映文件夹结构中的完整限定名称),那么在data-sap-ui-resourceroots属性中定义相应的条目就足够了:
<script id="sap-ui-bootstrap"
src="https://openui5.hana.ondemand.com/resources/sap-ui-core.js"
data-sap-ui-theme="sap_bluecrystal"
data-sap-ui-libs="sap.ui.layout, sap.m, my.uilib"
data-sap-ui-xx-bindingSyntax="complex"
data-sap-ui-resourceroots="{
ns:'./',
'my.uilib': './my/uilib/'
}">
</script>
如果结构不同,只需调整配置中的路径即可。 resourceRoots是早期配置的,因此您甚至可以在data-sap-ui-libs属性中指定lib。
但也许你已经尝试过了,但它没有用。那么问题可能出在选项的拼写上。它是“资源根源”,而不是“资源根源”。