Jquery 未捕获引用错误:myliba不是用最简单的现实requireJS示例定义的
在main.js中 在myliba.js中 导致 未捕获引用错误:未定义myliba 如果我添加了alertlovin requirejs;在myliba中,我很好地获得了警报,因此它被加载和评估。但我对myliba的定义没有导出 我了解到,如果您使用shim方法,则无法在函数调用中声明参数 就我而言,除了垫片,没有其他清洁方法。想象一下我有: jquery,jqueryui,myliba,mylibb myliba依赖于jquery mylibb依赖于jqueryui,而myliba依赖于jqueryJquery 未捕获引用错误:myliba不是用最简单的现实requireJS示例定义的,jquery,requirejs,Jquery,Requirejs,在main.js中 在myliba.js中 导致 未捕获引用错误:未定义myliba 如果我添加了alertlovin requirejs;在myliba中,我很好地获得了警报,因此它被加载和评估。但我对myliba的定义没有导出 我了解到,如果您使用shim方法,则无法在函数调用中声明参数 就我而言,除了垫片,没有其他清洁方法。想象一下我有: jquery,jqueryui,myliba,mylibb myliba依赖于jquery mylibb依赖于jqueryui,而myliba依赖于jq
除了shim,我想不出一个干净的方法,好吧,所以我在jQuery文件中看到了这一点,似乎这就是必须要做的事情
// Expose jQuery and $ identifiers, even in
// AMD (#7102#comment:10, https://github.com/jquery/jquery/pull/557)
// and CommonJS for browser emulators (#13566)
if ( typeof noGlobal === strundefined ) {
window.jQuery = window.$ = jQuery;
}
所以
解决问题amd模块通过在末尾返回字符串、函数和对象来解决问题
define("myliba", ["jquery"], function ($) {
return {
test: function () {
alert("requireJs is easy to use, it is well worth the hassle");
}
};
});
UPD:
我希望现在我理解您的意思是正确的,此解决方案将帮助您:
require.config({
paths: {
jquery: 'jquery-1.11.0',
jqueryui: 'path/to/jquery-ui'
},
shim: {
jquery: {
exports: '$'
},
jqueryui: {
deps: ['jquery'],
exports: '$'
}
}
});
define('myliba', ['jquery'], function($) { ... });
define('mylibb', ['myliba', 'jqueryui'], function(myliba, $) { ... });
require(['myliba', 'mylibb'], function(myliba, mylibb) { ... });
没错。但我很抱歉地告诉你,当使用垫片时它不起作用。去掉$符号,这是另一个错误为什么$是错误的?如果将jquery置于dependenciesread中,它将被传递给参数。请阅读我文章中的链接。它是这样写的:-->here@Toskan你把那篇文章理解错了。据说,如果您没有在依赖项数组中设置lib,则无法在参数中显示遗嘱。@Toskan但我仍然不明白您的lib是否定义为普通amd模块,如果您可以按照回答中所述设置所有依赖项,为什么需要将其放入垫片中?这是使用shimIf的唯一方法,如果您的lib定义为amd模块,为什么您可以想用垫片吗?垫片用于非amd LIB
define("myliba", function () {
var myliba = {};
test: function (){
alert("requireJs is easy to use, it is well worth the hassle");
}
window.myliba = myliba;
});
define("myliba", ["jquery"], function ($) {
return {
test: function () {
alert("requireJs is easy to use, it is well worth the hassle");
}
};
});
require.config({
paths: {
jquery: 'jquery-1.11.0',
jqueryui: 'path/to/jquery-ui'
},
shim: {
jquery: {
exports: '$'
},
jqueryui: {
deps: ['jquery'],
exports: '$'
}
}
});
define('myliba', ['jquery'], function($) { ... });
define('mylibb', ['myliba', 'jqueryui'], function(myliba, $) { ... });
require(['myliba', 'mylibb'], function(myliba, mylibb) { ... });