sap.ui.core.IAsyncContentCreation 这个标记接口在 SAP UI5 框架中的应用

简介: sap.ui.core.IAsyncContentCreation 这个标记接口在 SAP UI5 框架中的应用

这是 sap.ui.core.UIComponent 子类的标记接口(Marker interface)。


什么是标记接口?


可以查阅我这篇文章:ABAP和Java的tag(marker) interface。


简单地说,Marker interface 是编程语言在不支持注解(annotation)的情况下, 通过接口的概念,来为一个类或者函数(JavaScript 里的 function)增添元数据的技术手段。


回到本例,标记了接口 sap.ui.core.IAsyncContentCreation 的 UIComponent 子类,说明 SAP UI5 框架能够完全异步地创建其实例。该接口将隐式设置 Component 的 rootView 和路由器配置为异步方式创建。


在 Component 同步创建模式下,SAP UI5 框架的 createContent 函数直接返回创建好的实例。


所谓 Component 的异步创建,即是 SAP UI5 框架的 createContent 函数,返回一个 Promise. 这个 Promise 也将被链接到 Component.create 工厂方法的结果 Promise 中。


我们可以单步调试来观察运行时,SAP UI5 框架是如何处理这个 marker interface 的。


XMLTemplateProcessor.js 里的逻辑,负责将 SAP UI5 工程里的 XML 视图的源代码,解析成树形结构,这个树形结构的每一个节点就是一个 SAP UI5 控件定义,在运行时就是一个个 SAP UI5 控件实例。XMLTemplateProcessor 负责创建这些控件实例。


下图代码:

var bIsAsyncComponent = oOwnerComponent && oOwnerComponent.isA("sap.ui.co

意思是检查当前待创建的 Component,源代码里是否在 metadata 的 interfaces 数组里,定义了 sap.ui.core.IAsyncContentCreation 这个标记接口。如果定义了,布尔变量 bIsAsyncComponent 的值为 true.


根据这个布尔变量的值,分别进入异步创建实例和同步创建实例两个分支。

同样的逻辑还存在于 UIComponent.createContent 函数内。

总的来说,同步或者异步创建对 SAP UI5 应用开发人员的业务逻辑代码编写没有影响,这是 SAP UI5 框架的内部实现差异。


UI5 中的 XML 模板是使用 XML Preprocessor 创建的。 XML 模板将与元模型和元上下文一起传递给 XML 预处理器。 XML 预处理器用于创建视图和片段。


相关文章
|
13天前
|
Linux C++ Windows
【Azure 应用服务】Azure App Service(Windows)环境中如何让.NET应用调用SAP NetWeaver RFC函数
【Azure 应用服务】Azure App Service(Windows)环境中如何让.NET应用调用SAP NetWeaver RFC函数
【Azure 应用服务】Azure App Service(Windows)环境中如何让.NET应用调用SAP NetWeaver RFC函数
|
1月前
|
前端开发 关系型数据库 MySQL
Python基于Django框架图书管理系统,Bootstrap框架UI,后台EasyUI框架UI,有登录,实现增删改查的富文本效果
本文介绍了一个使用Python Django框架开发的图书管理系统,该系统采用Bootstrap框架进行前端UI设计,EasyUI框架用于后台UI界面,集成了富文本编辑器,并实现了登录及增删改查功能。
|
23天前
|
JavaScript 前端开发
Vue实现Element UI框架的自定义输入框或下拉框在输入时对列表选项进行过滤,以及右键列表选项弹出菜单进行删除
本文介绍了如何在Vue框架结合Element UI库实现自定义输入框或下拉框,在输入时对列表选项进行过滤,并支持右键点击列表选项弹出菜单进行删除的功能。
15 0
|
24天前
数字化核心构建问题之SAP为应用软件扎根客户打基础如何解决
数字化核心构建问题之SAP为应用软件扎根客户打基础如何解决
10 0
|
1月前
|
前端开发 Linux API
Avalonia:一个.NET跨平台UI框架
Avalonia:一个.NET跨平台UI框架
53 0
|
2月前
|
前端开发 API
前端框架与库 - Material-UI组件库
【7月更文挑战第20天】Material-UI 是一个基于 React 的 UI 组件库,它遵循 Google 的 Material Design 设计规范,提供了丰富的预构建组件,极大地简化了前端开发过程。本文将深入浅出地介绍 Material-UI 的常见问题、易错点及如何避免这些问题,并附带代码示例,帮助你更好地掌握 Material-UI 的使用技巧。
71 0
|
3月前
|
小程序 开发者 Windows
轻量、可靠的小程序 UI 框架 -- Vant Weapp的安装和使用
轻量、可靠的小程序 UI 框架 -- Vant Weapp的安装和使用
67 1
|
2月前
uniapp 安装插件 uView (多平台快速开发的UI框架)
uniapp 安装插件 uView (多平台快速开发的UI框架)
68 0
|
4月前
|
监控 测试技术
SAP 电商云修改 Product Catalog Staged 版本数据后,同步到 online 版本的 UI 操作
SAP 电商云修改 Product Catalog Staged 版本数据后,同步到 online 版本的 UI 操作
|
4月前
|
JavaScript 前端开发
试读版:如何找出 SAP 标准 Fiori 应用某个按钮点击后执行的 JavaScript 源代码
试读版:如何找出 SAP 标准 Fiori 应用某个按钮点击后执行的 JavaScript 源代码
下一篇
DDNS