UI5 требует файлов, которые уже включены в Component-preload.js

Я создал Компонент-preload.js от [email protected] с параметром compatVersion: "1.44", так как мое ядро ​​SAPUI5 составляет 1,44.

Сценарий:

openui5_preload: {

    component: {

        options: {

            resources: {

                cwd: "<%= dir.webcontent %>",
                prefix: "<%= dir.webapp %>/<%= dir.webcontent %>",
                src: [
                    "**/*.js",
                    "**/*.html",
                    "**/*.json",
                    "**/*.fragment.html",
                    "**/*.fragment.xml",
                    "**/*.fragment.json",
                    "**/*.view.html",
                    "**/*.view.xml",
                    "**/*.view.json",
                    "**/*.properties",
                    "manifest.json",
                    "!test/**"
                ]
            },
            compatVersion: "1.44",

            dest: "<%= dir.dist %>"
        },

        components: "<%= dir.webapp %>/<%= dir.webcontent %>"
    }
}

В результате у меня есть файл, содержащий все, что я упомянул в скрипте, я сохраняю его в папке Веб-контент и обновляю пути в соответствии с иерархией, как это описано в книге SAPUI5.

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

Я хочу, чтобы файлы, упомянутые в предварительном загрузчике, не запрашивались браузером как отдельные файлы. В противном случае нет причин использовать прелоадер. Как я могу это исправить?

P.S. Проблема аналогична Минифицированные * .properties и * .css по-прежнему запрашиваются.

имя пространства имен содержится в ключе объектов предварительной загрузки? вероятно, это префиксная запись.

Jorg 26.09.2018 23:40

@Jorg, у меня вообще нет записи prefix. Структура моего Component-preload.js: jQuery.sap.registerPreloadedModules({ "version": "2.0", "name": "Component-preload", "modules": {...} });

Mike 26.09.2018 23:46

Префикс записей в объекте modules должен включать пространство имен, например "my/app/namespace/Component.js": "..."

Jorg 27.09.2018 00:17

@Jorg, следовательно, необходимо использовать пространство имен в пути, каково правильное расположение файла? Он должен находиться в папке root или в WebContent?

Mike 27.09.2018 08:39
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
2
4
996
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Пространство имен - это не фактический путь к файлу, это то, что вы определили в своем манифесте как корень вашего приложения, который затем распространяется на все остальные файлы. Сама предварительная загрузка находится там, где живет ваш Component.js.

Предварительная загрузка выглядит так:

Чтобы немного уточнить; UI5 загружает и кэширует файлы внутренне на основе пространства имен и имени файла, что соответствует идентификатору на снимке экрана:

com.bus.inbox.mist.businessrolechange.Component.js для компонента или com.bus.inbox.mist.businessrolechange.controllers.View1.controller.js для контроллера View1. Если предварительная загрузка не соответствует этим идентификаторам, механизм кэширования не может их найти, и фактические файлы загружаются независимо от наличия файла предварительной загрузки.

В приведенном ниже примере (из WebIDE) папка dist развернута, а папка webapp хранится в репозитории git.

В некоторых случаях корень определяется немного иначе, например, resourceRoots в начальной загрузке файла index.html. Это в основном для автономных приложений.

<!-- Bootstrapping UI5 -->
<script id = "sap-ui-bootstrap"
        src = "resources/sap-ui-core.js"
        data-sap-ui-libs = "sap.m"
        data-sap-ui-theme = "sap_belize"
        data-sap-ui-compatVersion = "edge"
        data-sap-ui-preload = "async"
        data-sap-ui-resourceroots='{"com.bus.inbox.mist.businessrolechange": "."}'
        data-sap-ui-frameOptions = "trusted">
</script>

Спасибо за подробное объяснение. На самом деле я не могу найти manifest.json в своем проекте, я использую NWDS / NWDI, а не WebIDE. Попробую создать манифест вручную.

Mike 27.09.2018 09:44

Вместо этого ваш манифест может быть включен как структура json в ваш компонент

Jorg 27.09.2018 09:45

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