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

What happens if a library preload file / library dependencies is not updated in the UI5-manifest?

在应用程序开发人员的最佳实践中,Load Only What You Really Need部分是这样写的:

Keep Your Library Dependencies Up To Date
A library preload file, the library styles and text translations are loaded for every library you define in the application descriptor or the OpenUI5 bootstrap. Always define libraries in the manifest and remove all libraries that you do not intend to use in your code.

例如:

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

我的理解是否正确,在 libs 中,我必须添加出现在 UI5-app 的任何控制器的 sap.ui.define([…]) 中的所有库?如果我忘记在此处添加库会怎样?它只是被排除在 Component-preload.js 之外并以非优化方式加载还是存在更严重的缺点?

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

要回答您的问题,请看一下这个小 ui5 demo app

加载时:

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

打开 DevTools 并查看“网络”选项卡。由于 manifest.json 中库的引用,两个 library-preload.js 都在 之前 加载 Component.js.

当您移除时:

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

再次从 manifest.json 和 运行 应用中,然后您可以看到所有 UI5 元素都在 您的 component.js。这只会减慢您的应用程序。

是的,为了从性能优化中受益,您必须根据 UI5 库*[始终保持 manifest.json 中的 /sap.ui5/dependencies/libs 部分是最新的=58=] 在应用程序中使用。 IE。不仅 "sap.ui.core""sap.m",而且,例如 "sap.ui.table" 如果您的应用使用 sap.ui.table.Table.

如果 你有不需要在应用程序启动时立即预加载但应该按需加载的库,你可以将 lazy: true 分配给这些图书馆:

"libs": {
  "sap.ui.core":{},
  "sap.m":{},
  "sap.ui.comp":{
    <strong>"lazy": 真</strong>
  }
}

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

// "sap/ui/core/Core" 需要核心
等待 Core.<a href="https://openui5.hana.ondemand.com/api/sap.ui.core.Core#methods/loadLibrary" rel="nofollow noreferrer">loadLibrary</a>("sap.ui.comp", <strong>/*async:*/true </strong>); // 延迟加载这个重量级的库

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

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


working with UI5 tooling.

时同理

All libraries required by your project must be listed in the libraries section of the framework configuration:

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