RequireJS-具有多个jQuery版本的jQuery插件

RequireJS-具有多个jQuery版本的jQuery插件,jquery,requirejs,Jquery,Requirejs,我正在尝试将一些遗留的js代码包装到模块中,以便可以使用RequireJS加载它们 我有三个jQuery插件,我们称它们为a、b和c 插件a适用于任何版本的jQuery 插件b与jQuery版本1.4.2配合使用 插件c使用a和b,可以与任何版本的jQuery一起使用 因此,无论何时需要插件a,需要加载的jQuery都是版本1.4.2。 我的require.config看起来像: require.config({ paths:{ "jquery": "libs/jque

我正在尝试将一些遗留的js代码包装到模块中,以便可以使用RequireJS加载它们

我有三个jQuery插件,我们称它们为a、b和c

  • 插件a适用于任何版本的jQuery
  • 插件b与jQuery版本1.4.2配合使用
  • 插件c使用a和b,可以与任何版本的jQuery一起使用
因此,无论何时需要插件a,需要加载的jQuery都是版本1.4.2。 我的require.config看起来像:

require.config({
   paths:{
        "jquery": "libs/jquery.1.9.1.min",
        "jquery1-4-2" : "libs/jquery1.4.2.min"
   });
插件的定义如下:

plugin a:
   define(["jquery"], function($){ (...) });
plugin b:
   define(["jquery1-4-2"], function($){ (...) });
plugin c:
   define(["jquery", "a","b"], function($){ (...) });
我如何配置这个场景,以便如果任何插件需要某个版本的jQuery,而其他插件不需要某个版本,那么只加载该版本


提前感谢。

如果您真的在使用jquery 1.4,那么这个版本不支持Requirejs,您应该定义de-shim配置,但是由于jquery全局定义$object,因此会覆盖任何现有的全局$variable,因此会产生冲突。
我认为你可以使用jQuery.noConflict来避免这个问题。

如果有人感兴趣,在这里找到了这种情况的解决方案:那么它是否可以归结为使用
map
根据依赖它的模块来重新定义
jQuery
模块?据我所知,当这个模块“oldplugin”要求“jquery”,您将返回另一个js,而不是为模块“jquery”定义的js。但是,在使用诸如require([“jquery”,“oldplugin”]、function($){(…)})之类的东西时,要特别小心jquery命名空间,因为$将表示“默认”jquery版本,而不是require js通过map为“oldplugin”加载的版本“.Hello,在Require js中有一个shim:{}配置,您可以使用它来解析use。请添加您找到的答案,以便将此问题从“未回答”选项卡中删除。