SAPUI5需要文件,这些文件已经捆绑到Component-preload.js

时间:2018-09-26 12:02:22

标签: javascript sapui5

由于我的SAPUI5核心为1.44,因此我使用grunt-openui5@0.14.0通过compatVersion: "1.44"构建了 Component-preload.js

脚本:

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 %>"
    }
}

结果,我有了一个文件,其中包含我在脚本中提到的所有内容,将其存储在 WebContent 文件夹中,并根据层次结构更新路径,就像在SAPUI5书。

测试时,我得到一个奇怪的行为-浏览器同时加载 Component-preload.js 和其中提到的所有文件。换句话说,在生成预加载器之后,浏览器会下载该文件,但会忽略其内容,并仍然请求单独的文件,尽管它们已位于此预加载器中,

我希望在预加载器中提到的文件不会被浏览器请求为单独的文件。否则,没有理由使用预加载器。我该如何解决?

P.S。问题类似于Minified *.properties and *.css are still requested

1 个答案:

答案 0 :(得分:2)

命名空间不是实际的文件路径,它是您在清单中定义为应用程序根目录的任何文件,然后传播到其他所有文件。预加载本身位于Component.js所在的任何位置。

itsrts/pptVieweer

预载如下: enter image description here

详细说明; UI5根据名称空间和文件名在内部加载和缓存文件,即按照屏幕快照中的ID:

com.bus.inbox.mist.businessrolechange.Component.js用于组件,或com.bus.inbox.mist.businessrolechange.controllers.View1.controller.js用于View1的控制器。如果预加载与这些ID不匹配,则缓存机制将找不到它们,并且无论是否存在预加载文件,都将加载实际文件。

在下面的示例中(来自WebIDE),部署了dist文件夹,并将webapp文件夹存储在git存储库中。

enter image description here

在某些情况下,根的定义略有不同,例如index.html文件的引导程序中的resourceRoots。这主要用于独立应用程序。

<!-- 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>