我正在尝试使用带有RequireJS的OpenLayers库.
问题是,OpenLayers一直被"未定义",即使它被列为我模块的唯一依赖项:
define(['OpenLayers'],function (OpenLayers) {
console.log(OpenLayers);
});
Run Code Online (Sandbox Code Playgroud)
这将打印"undefined".
如果我用jquery替换OpenLayers(两个.js文件都在同一个文件夹中),它将不再是未定义的.
那么为什么OpenLayers没有被RequireJS加载?
Wer*_*rås 10
这段代码对我有用:
require.config({
shim: {
OpenLayers: {
exports: 'OpenLayers'
}
}
});
require(['OpenLayers'], function(OpenLayers) {
console.log(OpenLayers);
});
Run Code Online (Sandbox Code Playgroud)
我和Backbone.Marionette有同样的问题.添加'marionette': { exports: 'Marionette' }到shim对象工作.
此shim添加适用于OpenLayers和Marionette,原因如下(来自RequireJS文档):
shim:为不使用define()声明依赖关系并设置模块值的旧的传统"浏览器全局"脚本配置依赖关系和导出.示例(RequireJS 2.1.0+):
requirejs.config({
shim: {
'backbone': {
//These script dependencies should be loaded before loading
//backbone.js
deps: ['underscore', 'jquery'],
//Once loaded, use the global 'Backbone' as the
//module value.
exports: 'Backbone'
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3039 次 |
| 最近记录: |