SAP UI5 应用 index.html 里 data-sap-ui-resourceroots 指令的含义和作用

简介: SAP UI5 应用 index.html 里 data-sap-ui-resourceroots 指令的含义和作用

如下图所示:

image.png

<script id="sap-ui-bootstrap"
  src="https://sapui5.hana.ondemand.com/resources/sap-ui-core.js"
  data-sap-ui-theme="sap_bluecrystal"
  data-sap-ui-libs="sap.m, sap.ui.comp"
  data-sap-ui-bindingSyntax="complex" 
  data-sap-ui-compatVersion="edge"
  data-sap-ui-preload="async"
  data-sap-ui-resourceroots='{
  "sap.ui.demo.CombineLatest": "./"
  }'>
</script>


我刚学习 SAP UI5 时,对 data-sap-ui-resourceroots 的作用很是费解。


浏览我们开发的整个 SAP UI5 项目资源,无论是 Component.js:


image.png



还是视图的控制器:

image.png


还是视图的 id 本身,都包含了 sap.ui.demo.CombineLatest 的前缀:

image.png


如果我们把 index.html 里的 data-sap-ui-resourceroots 指令去掉:


image.png


会发现应用根本无法加载了,Chrome 开发者工具里报了很多资源文件无法加载的错误。


image.png


摘取其中一条错误消息出来分析。现在 Component.js 的加载路径为:


https://sapui5.hana.ondemand.com/resources/sap/ui/demo/CombineLatest/Component.js


显然,这个路径是继承自 index.html 里 id 为 sap-ui-bootstrap 里的 src 属性定义的 SAP UI5 库文件:


image.png


我们工程文件里的 Component.js, 其 id 为 sap.ui.demo.CombineLatest.Component:


image.png


SAP UI5 框架在加载时,将 id 转换成 url:


sap/ui/demo/CombineLatest/Component.js,


然后在其头部,拼接上来自 id 为 sap-ui-bootstrap 里的 src 属性定义的 SAP UI5 库文件的前缀:


https://sapui5.hana.ondemand.com/resources/


最后得到的路径:


https://sapui5.hana.ondemand.com/resources/sap/ui/demo/CombineLatest/Component.js


显然,这个路径是错误的。因为 Component.js 仅仅存在于我们工程自身。


因此需要使用 data-sap-ui-resourceroots 告诉 SAP UI5 加载器,如果遇到前缀为 sap.ui.demo.CombineLatest 的本地资源文件,**不要使用 sap-ui-core.js **的前缀即 https://sapui5.hana.ondemand.com/resources,而是使用本地路径./


image.png


修改之后,资源加载成功,正确的路径应该是:http://localhost:3002/combine/Component.js


这个路径是怎么来的呢?


(1) Component.js 的 id 为 sap.ui.demo.CombineLatest.Component,因为 data-sap-ui-resourceroots 生效,将 sap.ui.demo.CombineLatest.Component 替换成 ./Component


(2) ./Component 替换成 URL:/Component.js


(3) ./之前的 url 为 localhost:3002/combine


得到最后的绝对路径去加载 Component.js:


http://localhost:3002/combine/Component.js


相关文章
|
3月前
|
Ubuntu C++ Docker
Docker的基本指令和HTML/PYTHON/C++的简单创建示例
Docker的基本指令和HTML/PYTHON/C++的简单创建示例
|
22天前
|
前端开发
酷炫表单,触感未来:HTML与CSS动画的创新应用!
酷炫表单,触感未来:HTML与CSS动画的创新应用!
|
1月前
|
移动开发 API 开发者
什么是HTML5 History API有哪些应用场景
【8月更文挑战第11天】什么是HTML5 History API有哪些应用场景
32 1
|
2月前
|
JavaScript 前端开发 物联网
文本,Vue实现打印的方式,打印机的种类有多少,浏览器打印html,右键,2打印插件,3指令打印,vue-print-nb
文本,Vue实现打印的方式,打印机的种类有多少,浏览器打印html,右键,2打印插件,3指令打印,vue-print-nb
|
4月前
|
设计模式 前端开发 Java
Java与HTML的深度融合:技术解析与应用实践
Java与HTML的深度融合:技术解析与应用实践
417 1
|
4月前
|
前端开发 JavaScript
HTML图像标签的深入解析与应用
HTML图像标签的深入解析与应用
48 1
|
4月前
|
存储 前端开发 JavaScript
HTML相对路径的深入解析与应用
HTML相对路径的深入解析与应用
75 0
|
4月前
|
移动开发 UED HTML5
HTML锚点链接的深入解析与应用
HTML锚点链接的深入解析与应用
73 0
|
3天前
|
Web App开发 前端开发 JavaScript
HTML/CSS/JS学习笔记 Day3(HTML--网页标签 下)
HTML/CSS/JS学习笔记 Day3(HTML--网页标签 下)

热门文章

最新文章