如何获取控制器内的UI5框架版本?

How to get a version of UI5 framework within the controller?

我想检索控制器内部的 UI5 版本(例如 1.97.0-SNAPSHOT)。最简单的方法是获取 sap.ui.version 的值,但它是一个全局变量,我想避免这种情况。

我想,sap.ui.VersionInfo会是一个正确的选择,但是查看它的API,我找不到任何方法,与UI5版本的检索有关。

我也检查了控制器的内部结构(不太深)和sap.ui.Device,但没有版本号。

如何在不使用全局变量的情况下获取 UI5 框架版本?

如果您正在使用 OpenUI5,通过 sap.ui.version 访问版本字符串是在使用全局引用时仍然允许的例外之一(请参阅 "Don't use references to global names"). But you can also require sap/ui/Global 然后通过 myRequiredGlobal<strong>.version</strong>.

访问它

SAPUI5 的情况下,补丁版本并不总是与 SAPUI5 核心版本(即 OpenUI5)相同。要可靠地获得正确的 SAPUI5 版本,需要模块 sap/ui/VersionInfo。它 method load() will return a promise that resolves with an object - same as https://<em><host></em>/resources/sap-ui-version.json - 包含有关当前框架的所有信息,包括其版本。

// VersionInfo required from "sap/ui/VersionInfo"
// VersionUtil required from "sap/base/util/Version"

// Within an async function:
const { version } = await VersionInfo.load(); // version === "1.94.1" !== sap.ui.version (1.94.0)
const versionUtil = new VersionUtil(version);

如您所见,还可以将检索到的版本字符串与 module sap/base/util/Version 组合,后者提供 getMajor()getMinor()getPatch()compareToinRange、等等

相关文档主题


⚠️已知问题

独立 UI5 应用程序(例如使用 ui5 build self-contained -a 构建)中使用模块 sap/ui/VersionInfo 时,来自生成的 resources/sap-ui-version.json 应用程序版本 而不是框架的版本。在撰写本文时,独立应用程序应使用 sap.ui.version 而不是如上所述,在 SAPUI5 的情况下,它不会报告确切的补丁级别。

参见issue SAP/ui5-tooling#353