如果 UI5 清单中的库预加载文件/库依赖项未更新,会发生什么情况?

问题描述 投票:0回答:2

在应用程序开发人员的最佳实践中,只加载您真正需要的部分是这样写的:

让你的库依赖保持最新
为您在应用程序描述符或 OpenUI5 引导程序中定义的每个库加载库预加载文件、库样式和文本翻译。始终在清单中定义库并删除您不打算在代码中使用的所有库。

例如:

"sap.ui5": {
    "dependencies": {
        "minUI5Version": "1.85.0",
        "libs": {
            "sap.ui.core": {},
            "sap.m": {},
            "sap.ui.layout": {}
        }
    }
    ...
}

我的问题:

  1. 我是否理解正确,在

    libs
    中,我必须添加出现在 UI5-app 的任何控制器的
    sap.ui.define([…])
    中的所有库?

  2. 如果我忘记在这里添加库会怎样?它只是被排除在

    Component-preload.js
    之外并以非优化方式加载还是存在更严重的缺点?

sapui5 ui5-tooling
2个回答
3
投票

是的,为了从性能优化中受益,您必须保持

manifest.json
部分
/sap.ui5/dependencies/libs
始终与 UI5 库*(包括自定义库)同步,这可以从应用程序代码中识别 and如果 lib 来自框架,则在 API Reference 中可见。 IE。不仅是
"sap.ui.core"
"sap.m"
,而且,例如,
"sap.ui.table"
如果其中一个视图包含
sap.ui.table.Table
.

如果您有不需要在应用程序启动时立即预加载但应该按需加载的库,您可以将

"lazy": true
分配给这些库,例如:

"libs": {
    "sap.ui.core": {},
    "sap.m": {},
    "sap.ui.comp": {
        "lazy": true
    }
}

但是

"lazy": true
纯粹是信息性的。在应用程序中,此类库应在使用前显式加载:

// Core required from "sap/ui/core/Core"
await Core.loadLibrary("sap.ui.comp",/*async:*/true);

有关

loadLibrary
的更多信息:https://sdk.openui5.org/api/sap.ui.core.Core#methods/loadLibrary

* 在 UI5 的上下文中,“库”是控件、元素、类型、接口等的命名束
可以在以下位置找到此类库的列表:

将单个模块(例如

sap/ui/Device
)添加到
/sap.ui5/dependencies/libs
部分将不起作用。要查看模块属于哪个库,请检查 API 参考中模块命名空间页面中的“库”信息。


使用 UI5 工具时同样适用

您的项目所需的所有库必须列在框架配置的

libraries
部分:

framework:
  name: OpenUI5
  version: 1.112.0
  libraries:
    - name: sap.ui.core
    - name: sap.m
    - name: sap.ui.table
    - name: ...

1
投票

component-preload.js
只包含您的应用程序的元素,从不包含任何 UI5 代码。

要回答您的问题,请看一下这个小的 ui5 演示应用程序

加载时:

"sap.ui5": {
    "dependencies": {
        "minUI5Version": "1.108.0",
        "libs": {
            "sap.ui.core": {},
            "sap.m": {}
        }
    }
}

打开 DevTools 并查看网络选项卡。由于

manifest.json
中的库的引用,两个
library-preload.js
都在 before 你的 Component.js.

移除时:

"sap.ui.core": {},
"sap.m": {}

manifest.json
再次运行应用程序,然后您可以看到所有 UI5 元素都在您的 component.js 之后一个一个地加载
。这只会减慢你的应用程序。

© www.soinside.com 2019 - 2024. All rights reserved.