首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在使用CDN时加载自定义库

在使用CDN时加载自定义库
EN

Stack Overflow用户
提问于 2015-11-25 08:30:41
回答 1查看 517关注 0票数 0

我有一个应用程序,它使用一个自定义的应用程序库(sap.ui.foo),其中包含自定义控件、视图和控制器。

我的部署策略是从为index.html文件提供服务的同一服务器/端口提供我的定制库。

我还想使用sap.m来加载OpenUI5库(sap.m等)。

我使用的是OpenUI5's GitHub repository自带的Grunt/node工具。

当我在本地加载我的应用程序时(没有CDN),它工作得很好,但速度非常慢(我想是非常大的下载负载),所以我尝试使用CDN来提高启动性能。

我的index.html看起来像这样:(在@codeworrior的答案之后编辑):

代码语言:javascript
运行
复制
    <script id="sap-ui-bootstrap"
         src="https://openui5.hana.ondemand.com/resources/sap-ui-core.js"
         data-sap-ui-theme="sap_bluecrystal"
         data-sap-ui-libs="sap.ui.layout, sap.m, sap.ui.foo"
         data-sap-ui-xx-bindingSyntax="complex"
         data-sap-ui-resourceroots='{
             "ns":"./",
             "sap.ui.foo": "./sap/ui/foo/"
         }'
    >

下面是我的目录结构(据我所知是“标准”):

代码语言:javascript
运行
复制
src
├── foo
│   └── src
│       └── main
│           └── webapp
│               ├── index.html # start point
│               ├── resources
│               ├── test-resources
│               └── WEB-INF
├── sap.m
├── sap.ui.commons
...other sap libs...
└── sap.ui.foo
    └── src
        └── sap
            └── ui
                └── foo
                    └── # my controls...

grunt build:production之后,我的“目标”目录看起来像这样:

代码语言:javascript
运行
复制
target
├── openui5-sap.m
├── openui5-sap.ui.commons
├── openui5-sap.ui.core
├── openui5-sap.ui.demokit
├── ...other sap libs...
├── openui5-sap.ui.foo
    └── resources
        └── sap
            └── ui
                └── foo
                    ├── Bootstrap.js
                    ├── controllers
                    ├── controls
                    ├── data
                    ├── font
                    ├── img
                    ├── js
                    ├── library.js
                    ├── library-preload.json
                    ├── models
                    ├── tasks
                    ├── themes
                    ├── util.js
                    ├── views
                    └── wrappers

但是,在我执行grunt serve:target并点击url http://localhost:8989/foo/之后,在Chrome的开发工具中,我得到了:

代码语言:javascript
运行
复制
failed to preload 'sap.ui.foo.library-preload': Not Found -  sap.ui.ModuleSystem
Uncaught Error: failed to load 'sap/ui/foo/library.js' from ./sap/ui/foo/library.js: 404 - Not Found

network选项卡显示CDN文件正在正常提供,但我尝试在本地提供的文件(例如我的定制库的library.js和library-preload.json)是404文件。

关于如何加载我的库有什么建议吗?

EN

回答 1

Stack Overflow用户

发布于 2015-11-30 22:22:45

如果您的库以常规方式存储(反映文件夹结构中的全限定名),那么在data-sap-ui-resourceroots属性中定义相应的条目就足够了:

代码语言:javascript
运行
复制
<script id="sap-ui-bootstrap"
 src="https://openui5.hana.ondemand.com/resources/sap-ui-core.js"
 data-sap-ui-theme="sap_bluecrystal"
 data-sap-ui-libs="sap.ui.layout, sap.m, my.uilib"
 data-sap-ui-xx-bindingSyntax="complex"
 data-sap-ui-resourceroots="{
   ns:'./',
   'my.uilib': './my/uilib/'
 }">
</script>

如果结构不同,只需调整配置中的路径即可。数据是很早就配置的,所以您甚至可以在resourceRoots -sap-ui-libs属性中指定您的库。

但也许你已经尝试过了,但它不起作用。那么问题可能出在选项的拼写上。这是“资源根”,而不是“资源根”。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33906496

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档