我正在从 jQuery 1.8 升级到 1.9,并且由于 jQuery.browser() 被删除,我将使用jQuery Browser Plugin。
我的 requirejs 配置文件(使用 data-main="" 加载)看起来有点像这样:
(已编辑- 添加了更多代码片段)
main-comp.js
require.config({
paths: {
jquery: 'libs/jquery/jquery1.9.1.min',
utils: 'modules/utils',
myController: "controllers/myController",
browserPlugin: 'libs/jquery/jquery.browser.min'
},
shim: {
browserPlugin: {
deps: ['jquery']
}
}
});
require(['myController', 'jquery'], function (controller, $) {
$(controller.start);
}
);
模块/utils.js
define(['browserPlugin'], function () {
return {
browser: $.browser
};
});
myController.js
define(['utils'], function (utils) {
function start() {
console.log(utils.browser.msie)
}
return {
start: start
};
});
一切似乎都正常工作,但后来我看到有时在IE中我得到一个'jQuery' is undefined
(那里是大写的 Q)或文件中'$' is undefined
的错误jquery.browser.min.js
。
我认为deps
jquery 将在 jquery.browser 文件之前加载的方式,但显然情况并非总是如此。我尝试遵循这个答案并添加exports: "$.fn.browser"
但没有成功。
运行优化版本(使用 r.js 缩小 + uglify)时,我没有遇到过。
我究竟做错了什么?