我正在阅读Addy Osmani关于编写 AMD 模块的优秀博文。我从从他的帖子中提取的一小段 js 开始:
define('modTest', [],
// module definition function
function () {
// return a value that defines the module export
// (i.e the functionality we want to expose for consumption)
// create your module here
var myModule = {
doStuff:function(){
console.log('Yay! Stuff');
}
}
return myModule;
}
);
foo
我去掉了对and的依赖bar
。只想要一个记录到控制台的简单对象。
所以我将其保存,/js/modTest.js
然后尝试加载它:
curl(['/js/modTest.js'])
.then(function(mt) {
console.log("Load complete");
console.log("mt:");
console.log(mt);
mt.doStuff()
}, function(ex) {alert(ex.message);})
结果:错误:Multiple anonymous defines in URL
。好的,那没有用。尝试在命名空间中添加:define('myCompany/modTest', [],
,同样的结果。尝试在依赖数组中添加一个空字符串,结果相同。
也尝试curl(['modTest.js'], function(dep){console.log(dep)});
了相同的结果。
Addy 博文中的代码不正确吗?难道我做错了什么?也许卷曲中的错误?
5/24 更新:我放弃了 curl.js 以支持 require.js。零奇怪的错误,很少有工作需要改变。我确实需要处理一些 amdefine 来让我的代码在客户端和服务器端运行(两个地方都有一个对象,所以必须配置 grunt 来处理这个问题)。我的定义通常如下所示:
define(->
class AlphaBravo
...
并且永远不会有任何问题加载。