Javascript RequireJS:处理jQuery与垫片和未加载AMD的脚本的冲突

Javascript RequireJS:处理jQuery与垫片和未加载AMD的脚本的冲突,javascript,jquery,requirejs,amd,Javascript,Jquery,Requirejs,Amd,我有一个页面可以加载大多数带有RequireJS的模块,但也有一些第三方插件可以加载自己的JS代码(不使用RequireJS)。我的页面的简单版本看起来像 <script type="text/javascript"> require.config({ baseUrl: '/lib', shim: { "bootsShim": { deps: ["jquery"]

我有一个页面可以加载大多数带有RequireJS的模块,但也有一些第三方插件可以加载自己的JS代码(不使用RequireJS)。我的页面的简单版本看起来像

<script type="text/javascript">
    require.config({
        baseUrl: '/lib',
        shim: {
            "bootsShim": {
                deps: ["jquery"]
            },
        }
      });

        (function() {
           var thirdParty = document.createElement('script'); 
           thirdParty.type = 'text/javascript'; 
           thirdParty.async = true;
           thirdParty.src = "www.someserver.com/somecode.js";
           var s = document.getElementsByTagName('script')[0];     
           s.parentNode.insertBefore(thirdParty, s);
      })();
   </script>

require.config({
baseUrl:“/lib”,
垫片:{
“bootsShim”:{
部门:[“jquery”]
},
}
});
(功能(){
var thirdParty=document.createElement('script');
thirdParty.type='text/javascript';
thirdParty.async=true;
thirdParty.src=“www.someserver.com/somescode.js”;
var s=document.getElementsByTagName('script')[0];
s、 parentNode.insertBefore(第三方,s);
})();
这个somecode.js第三方库(注意它也是如何异步加载的)与它自己的jQuery版本捆绑在一起。由于它也注册为命名的AMD模块,因此与我的baseUrl中的jQuery(也称为“jQuery”)存在冲突。因为我的jQuery和他们的jQuery是不同的版本

因为我使用的是需要全局jQuery的填充库,所以我不能使用映射配置


如何最好地缓解此冲突?

您不能保存您的jquery版本,同步加载它们的脚本,以便在加载它们之后,您可以在$.ready中重命名保存的jquery吗

<script src="jquery.js?yourversion"></script>
<script>myJquery = $;<.script>
<script src="www.someserver.com/somecode.js"></script>
<script>
$(document).ready(function(){
  $ = myJquery;
});
</script>

myJquery=$;
$(文档).ready(函数(){
$=myJquery;
});

如果我的jQuery是由require js?Hmmm加载的,只有在synchronous@GavrielRequireJS始终异步加载其模块。总是。(即使那些对
require
的调用看起来是同步的,但它们并没有同步加载模块。)这里的答案并不能确保使用RequireJS加载的代码以及将jQuery列为依赖项的代码能够正常工作。