当前位置: 首页 > Web前端 > HTML5

sap.ui.core.IAsyncContentCreation标记接口在SAPUI5框架中的应用

时间:2023-04-05 19:05:19 HTML5

这是sap.ui.core.UIComponent子类的标记接口(Marker接口)。什么是标记接口?可以看看我的文章:ABAP和Java的tag(marker)接口。简单的说,Marker接口是在编程语言不支持注解的情况下,通过接口的概念为类或函数(JavaScript中的function)添加元数据的一种技术手段。回到这个例子,接口sap.ui.core.IAsyncContentCreation的UIComponent子类被标记,表明SAPUI5框架能够完全异步地创建它的实例。该接口隐式设置组件的rootView和router是异步创建的。Component同步创建方式下,SAPUI5框架的createContent函数直接返回创建的实例。所谓Component的异步创建就是SAPUI5框架的createContent函数,它返回一个Promise。这个Promise也将链接到Component.create工厂方法的结果Promise。我们可以通过调试逐步观察SAPUI5框架在运行时如何处理这个标记接口。XMLTemplateProcessor.js中的逻辑负责将SAPUI5项目中XML视图的源代码解析成树状结构。这个树结构的每个节点都是一个SAPUI5控件定义,是一个SAPUI5控件在运行时的实例。XMLTemplateProcessor负责创建这些控件实例。下图中的代码:varbIsAsyncComponent=oOwnerComponent&&oOwnerComponent.isA("sap.ui.core.IAsyncContentCreation");意思是检查当前要创建的Component是否定义在源码中元数据的interfaces数组中,是否定义了sap.ui。core.IAsyncContentCreation这个标记接口。如果已定义,布尔变量bIsAsyncComponent的值为真。根据这个布尔变量的值,进入异步实例创建和同步实例创建两个分支。同样的逻辑也存在于UIComponent.createContent函数中。一般来说,同步或异步创建对SAPUI5应用开发者的业务逻辑代码编写没有影响,这是SAPUI5框架内部实现的差异。UI5中的XML模板是使用XML预处理器创建的。XML模板与元模型和元上下文一起传递给XML预处理器。XML预处理器用于创建视图和片段。