Как быстрее загрузить sap.ui.comp.smarttable.SmartTable?

В SAPUI5 при добавлении sap.m.DatePicker в ваше приложение в первый раз требуется несколько секунд, чтобы загрузить необходимые файлы и открыть средство выбора даты. В API они объяснили:

Примечание: sap.ui.unified.Calendar используется внутри, только если открыт DatePicker (не используется для начального рендеринга). Если библиотека sap.ui.unified не загружается до открытия DatePicker, она будет загружена при открытии. Это может привести к ожиданию, когда DatePicker открывается в первый раз. Чтобы предотвратить это, приложения, использующие DatePicker, должны также загрузить библиотеку sap.ui.unified.

Так что это решение, которое они предлагают для ускорения загрузки DatePicker.

Когда я использую sap.ui.comp.smarttable.SmartTable Впервые пользователь может увидеть приложение, по крайней мере, от 10 до 15 секунд.

На самом деле он загружает огромное количество отдельных файлов JavaScript. Вот небольшая часть загруженных файлов.

Вот небольшая часть загруженных файлов

Теперь вопрос в том, можно ли как-то ускорить загрузку?

Я попробовал следующий код в dependencies манифест, но не помог.

"sap.ui.comp": {
    "minVersion": "1.52.1"
}

1 ответ

Решение

SmartTable - это огромный элемент управления, имеющий зависимости от следующих библиотек:

Это можно увидеть в исходном коде модуля:

sap.ui.comp.smarttable.SmartTable

sap.ui.define([
    'jquery.sap.global',
    'sap/m/VBoxRenderer',
    'sap/m/Column',
    // ...
    'sap/ui/comp/library',
    'sap/ui/comp/providers/TableProvider',
    'sap/ui/comp/smartfilterbar/FilterProvider',
    'sap/ui/comp/smartvariants/SmartVariantManagement',
    // ...
    'sap/ui/table/AnalyticalColumn',
    'sap/ui/table/AnalyticalTable',
    'sap/ui/table/Column',
    'sap/ui/table/Table',
    'sap/ui/table/TreeTable',
    // ...
], function(/*...*/) {/*...*/});

Попробуйте предварительно загрузить эти библиотеки асинхронно, например,

  • С этими настройками конфигурации начальной загрузки:

    data-sap-ui-libs="sap.ui.core, sap.m, sap.ui.comp, sap.ui.table, sap.ui.unified"
    data-sap-ui-preload="async"
    
  • Или в дескрипторе приложения в случае, если приложение должно работать на FLP (без index.html):

    "sap.ui5": {
      "dependencies": {
        "libs": {
          "sap.ui.core": {},
          "sap.m": {},
          "sap.ui.comp": {},
          "sap.ui.table": {},
          "sap.ui.unified": {}
        },
        ...
      },
      ...
    },
    

Это должно загружать таблицу быстрее, поскольку ее зависимости не нужно загружать по требованию и больше синхронно, что позволяет избежать зависания потока пользовательского интерфейса браузера.


Заметки

Другие вопросы по тегам