【发布时间】:2013-08-17 10:22:15
【问题描述】:
我正在从 jQuery 1.8 升级到 1.9,由于 jQuery.browser() 被删除,我将使用 jQuery Browser Plugin。
我的 requirejs 配置文件(使用 data-main="" 加载)看起来有点像这样:
(已编辑 - 添加了更多代码 sn-ps)
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 only 我收到 'jQuery' is undefined(那里是大写的 Q)或 '$' is undefined 错误来自jquery.browser.min.js 文件。
我认为deps 表示 jquery 将在 jquery.browser 文件之前加载,但显然情况并非总是如此。我尝试关注this answer 并添加exports: "$.fn.browser",但没有成功。
在运行优化版本时(使用 r.js 缩小 + uglify)我没有遇到过。
我做错了什么?
【问题讨论】:
标签: javascript requirejs