两个jQuery';这是一个要求

两个jQuery';这是一个要求,jquery,requirejs,Jquery,Requirejs,我有一个使用标准非AMD javascripts的网站,它有jQuery版本“1.7.2”。我希望使用require.js,我有一个主文件,看起来像这样 require.config({ paths: { jquery: "../components/jquery/jquery.min" } }); require(["jquery"], function($) { console.log($().jquery;); }); 我想让它运行并记录(1.9

我有一个使用标准非AMD javascripts的网站,它有jQuery版本“1.7.2”。我希望使用require.js,我有一个主文件,看起来像这样

require.config({
    paths: {
        jquery: "../components/jquery/jquery.min"
    }
});

require(["jquery"], function($) {
    console.log($().jquery;);
});
我想让它运行并记录(1.9.1),让我能够运行
console.log($().jquery;)并获取“1.7.2”。这意味着所有要求依赖项都使用新版本,但要求本身不会影响全局范围。如何实现这一点

在main的构建文件中,我可以看到jQuery没有包含在任何函数中。我希望它嵌套在一个函数中,以防止它位于全局范围内

我很乐意做这样的事

require.config({
  paths: {
    jquery: "../components/jquery/jquery.min"
  },
  shim: {
    jquery:{
      exports: "$JQ"
    }
  }
});

define("main", ["jquery"], function($JQ) {
  console.log($JQ().jquery);
});
但它不起作用…

也许可以试试这个:

编辑

require.config({
    paths: {
        jquery: "..components/jquery/jquery.min",
        jquery172: "../components/jquery/jquery-1.7.2.min",
        jquery191: "../components/jquery/jquery-1.9.1.min"
    }
});

// use jQuery 1.7.2 here
define("main", ["jquery172"], function($JQ) {
  console.log($JQ().jquery);
});


// use jQuery 1.9.1 here
define("some other module", ["jquery191"], function($JQ) {
  console.log($JQ().jquery);
});

// use whatevers global jQuery here
define("some other module", ["jquery"], function($JQ) {
  console.log($JQ().jquery);
});

这是有道理的,但有一个是全局的,我现在还不想改变。我有一个jquery的副本,它根本不在require中,它直接在页面上运行。我有一个require,它有一个新版本。require中的新版本恰好是全局的,它正在破坏网站上的东西。我不希望require的新jquery是全局的@ThomasReggi您必须使用
jQuery.noConflict()
,这样它就不会破坏全局jQuery。我已经尝试过了,但它不起作用。我发现一个类似的问题@ThomasReggi创建一个jQuery模块来包装它是有意义的
定义(['path/to/jQuery.min',函数(){return jQuery.noConflict(true);});