我认为我缺少一些东西。我已经读到可以使用RequireJS而不是Dojo加载器来使用dojo模块。我对RequireJS和定义模块有点不满意,但是我似乎无法弄清楚正在发生什么。我查看了dojo js文件,发现它们正在使用define(),与声明自己的模块时一样。我的文件是这样组织的
// File path
-js
main.js
- lib
.require.js
-dojo
// All dojo files
我不确定我缺少什么,但是当我尝试加载Dojo模块时,该值是不确定的。
以下是一些示例HTML:
// index.html
<html>
<head>
</head>
<body>
// include require script & set main.js
<script data-main="js/main" src="js/lib/require.js"></script>
</body>
</html>
和一个样本main.js文件...
// Sample main.js file
// BaseUrl = js/
require.config({
packages : [
name : 'dojo',
location : 'lib/dojo';
]
});
require(['dojo', 'dojo/dom'], function(dojo, dom) {
// 'dojo' should load dojo/main.js
// 'dojo/dom' should load dojo/dom.js
// But they have a value of "undefined" when I look at them in the console
console.log(dojo);
});
有什么想法我做错了吗?作为旁注,有时我会在控制台中收到此错误
TypeError: _3.add is not a function
[Break On This Error]
_3.add("dom-addeventlistener",!!document.addEventListener);
提前致谢!
最佳答案
_3.add("dom-addeventlistener",!!document.addEventListener);
实际上是has.add("dom-addeventlistener", !!document.addEventListener);
错误_3.add is not a function
是由于requirejs与dojo的AMD实现不同而没有定义has.js API所致。 Dojo尝试从AMD加载器中提取has.js实现。如果使用外部加载程序,则必须通过dojoConfig进行指示。运行精简版本时,您需要将staticHasFeatures
添加到生成配置文件中:
staticHasFeatures: {
"dojo-has-api": 0 // default 1
}
这样做为我解决了这个问题。
Further info