gpt4 book ai didi

javascript - 如何使用 require.js 加载 jQuery with noConflict

转载 作者:数据小太阳 更新时间:2023-10-29 04:00:20 25 4
gpt4 key购买 nike

我正在尝试使用 require 在 noConflict 模式下加载 jquery

require.config({
paths: {
'jquery': 'libs/jquery-req',
underscore: 'libs/underscore',
backbone: 'libs/backbone'
},
shim: {
jquery: {
init: function() {
console.log('jq init');
var jq = this.jQuery.noConflict(true);
jq.support.cors = true;

return jq;
},
exports: '$'
},
backbone: {
deps: ['underscore', 'jquery'],
init: function() {
console.log('b init');
},
exports: 'Backbone'
},
underscore: {
exports: '_'
}
}
});

然后像那样使用它:

define([
'jquery',
'underscore',
'backbone'
], function(jq, _, Backbone) {
console.log(jq);
var initialize = function() {
// Router.initialize();
};

return {
initialize: initialize
};
});

不幸的是,似乎从未调用过 shim.jquery.init 函数。有人可以帮我理解为什么吗?奇怪的是,当我重命名 jquery -> jquery-reg 时它似乎可以工作,但它需要更改每个文件中定义的依赖项。

最佳答案

创建以下 noconflict.js 模块:

define(["jquery"], function($) {
//drop the `true` if you want jQuery (but not $) to remain global
return $.noConflict(true);
});

然后,在你的 require.config 添加:

map: {
"*": {
"jquery": "noconflict"
},
"noconflict": {
"jquery": "jquery"
}
}

jQuery 的 noconflict 版本将交给所有模块(noconflict 除外)。摆脱 jQuery shim。

请注意,将 jQuery 排除在全局命名空间之外的做法将阻止您使用任何非 AMD 的 jQuery 插件,而无需将这些插件修改为 AMD 模块。 Shim 没有做任何神奇的事情来利用这个设置。这同样适用于您可能想要填充的任何非 AMD 模块,这取决于您制作的“纯”AMD 产品。

关于javascript - 如何使用 require.js 加载 jQuery with noConflict,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15901731/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com