组件清单文件中描述的库的异步预加载。

2020-08-18 14:49发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


专家们!

在研究SAP UI5引导过程的过程中,有两个用于异步加载过程的参数:

 data-sap-ui-async = true/false
 data-sap-ui-preload ="自动/异步/同步" 

因此,据我了解, data-sap-ui-preload =" async" 参数只能为声明在其中的库激活异步预加载

 data-sap-ui-libs =" sap.m,sap.tnt,....." 

没关系。 在DevTools中,我看到了这个异步预加载。 ui5loader-dbg使用它的异步函数" loadJSResource 异步"。

如果我设置 data-sap-ui-async = true 参数,则此参数与 data-sap-ui-preload =" async" 参数相同 引导库,但它也适用于其他模块。

因此,我的引导程序使用了 data-sap-ui-async = true 参数。

我希望组件的清单文件中的库应该异步加载,但不能。

manifest.json例如有四个要预加载的库,但是在DevTools中,我看到了Sync loading ..

 ...
 " sap.ui5":{
  "依赖关系":{
    " minUI5Version":" 1.30.00",
    " libs":{
      " sap.tnt":{},
      " sap.gantt":{},
      " sap.fileviewer":{},
      " sap.ndc":{}
    }
  }
 

看这张照片

ui5loader-dbg也使用它的同步功能: requireSync。

我想念什么?

最诚挚的问候,Evgeny T。

(22.2 kB)

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


专家们!

在研究SAP UI5引导过程的过程中,有两个用于异步加载过程的参数:

 data-sap-ui-async = true/false
 data-sap-ui-preload ="自动/异步/同步" 

因此,据我了解, data-sap-ui-preload =" async" 参数只能为声明在其中的库激活异步预加载

 data-sap-ui-libs =" sap.m,sap.tnt,....." 

没关系。 在DevTools中,我看到了这个异步预加载。 ui5loader-dbg使用它的异步函数" loadJSResource 异步"。

如果我设置 data-sap-ui-async = true 参数,则此参数与 data-sap-ui-preload =" async" 参数相同 引导库,但它也适用于其他模块。

因此,我的引导程序使用了 data-sap-ui-async = true 参数。

我希望组件的清单文件中的库应该异步加载,但不能。

manifest.json例如有四个要预加载的库,但是在DevTools中,我看到了Sync loading ..

 ...
 " sap.ui5":{
  "依赖关系":{
    " minUI5Version":" 1.30.00",
    " libs":{
      " sap.tnt":{},
      " sap.gantt":{},
      " sap.fileviewer":{},
      " sap.ndc":{}
    }
  }
 

看这张照片

ui5loader-dbg也使用它的同步功能: requireSync。

我想念什么?

最诚挚的问候,Evgeny T。

(22.2 kB)
付费偷看设置
发送
4条回答
Haoba3210
1楼-- · 2020-08-18 15:43

我只能异步加载Component库,这样:

我在ComponentContainer构造函数参数中添加了 manifest:" ./manifest.json"

 
   

结果是,在Component.js之前加载了Component的manifest.json,并且manifest.json中的所有库都被异步加载了:

葫芦娃快救爷爷
2楼-- · 2020-08-18 15:45

您可以共享整个index.html吗? 该应用使用哪个UI5版本启动? 通常,如果问题中可以包含一个 mcve ,以便读者可以重现该问题,那就太好了。

宇峰Kouji
3楼-- · 2020-08-18 15:32

手动实例化ComponentContainer时,其构造函数选项"清单"需要具有 truthy 值或它的 path (例如" somewhere/manifest.json")。 根据 API参考:

>至 激活组件及其依赖项的完全异步加载行为,清单属性需要设置为"真实"值,例如

在您的情况下,它是未定义的,导致了同步请求。

从1.58版开始,可以改为使用模块 sap/ui/core/ComponentSupport , 允许创建ComponentContainer 没有内联脚本且具有预定义的设置,从而启用 CSP 支持,首先显示和异步方法。 示例: https://embed.plnkr.co/16J1TFICxbqETCzaxuZ0

有关更多信息,请参阅API参考 。

___

PS:如果应用基于组件,则可能要删除data-sap-ui-libs =" sap.m"。 参见 data-sap-ui-libs与清单的依赖性.libs

# p#

App已以1.77.2版本启动。

下面是没有异步加载库的代码,这些代码是在Component.js的manifest.json中声明的。

index.html

 <!DOCTYPE html>
 
 <头>
   
   
   测试

   
   
     

manifest.json

 {
   " sap.app":{
     " id":" InitTest",
     " type":"应用程序",
     " applicationVersion":{
       " version":" 1.0.0"
     }
   },

   " sap.ui5":{
     "依赖关系":{
       " minUI5Version":" 1.30.00",
       " libs":{
         " sap.tnt":{},
         " sap.gantt":{}
       }
     },
     " rootView":{
       " viewName":" InitTest.view.Main",
       " type":" XML",
       "异步":是的,
       " id":" app"
     }
   }
 } 

Component.js

 sap.ui.define([
   " sap/ui/core/UIComponent"
 ],函数(UIComponent){
   "使用严格";
   返回UIComponent.extend(" InitTest.Component",{
      元数据:{
       清单:" json"
      },
      初始化:函数(){
         UIComponent.prototype.init.apply(this,arguments);
      }
   });
 }); 
Haoba3210
4楼-- · 2020-08-18 15:44

以下帮助 answer 吗?

一周热门 更多>