Javascript 带requirejs的JQVMAP

Javascript 带requirejs的JQVMAP,javascript,requirejs,jvectormap,Javascript,Requirejs,Jvectormap,如何将require.js用作模块 jvpamd兼容吗?如果有人能链接到一个例子或建议一些解决方法,那就太好了 我无法使用shim选项,因为我使用的是旧的require.js,无法更新它。您可以使用定义来包装库,从而有效地实现shim选项的功能。快速测试设置: jqvmap wrapped.js // to simplify the example used jQuery named as "jquery.js" define(['jquery'], function(jQuery){

如何将require.js用作模块

jvpamd兼容吗?如果有人能链接到一个例子或建议一些解决方法,那就太好了


我无法使用shim选项,因为我使用的是旧的require.js,无法更新它。

您可以使用
定义
来包装库,从而有效地实现
shim
选项的功能。快速测试设置:

jqvmap wrapped.js

// to simplify the example used jQuery named as "jquery.js" 
define(['jquery'], function(jQuery){
   // original jqvmap.js goes here
   // (...)

   // please note: not returning anything
});
define(['jquery', 'jqvmap-wrapped'], function ($, _jqvmapEmpty) {
   console.log('jQuery=', $);
   console.log('jqvmap-wrapped=', _jqvmapEmpty);
   console.log('jqvmap attached to jQuery? ', $.prototype.vectorMap);

   $('#vmap').vectorMap({
     // params
   });
})
index.html

<html>
  <head>
    <script data-main="index" src="require.js"></script>
  </head>
  <body>
    <div id="vmap" style="width: 600px; height: 400px;"></div>
  </body>
</html>
一句解释:插件将自己添加到jQuery中,它没有“独立”版本。包装器模块没有返回任何内容,它只是有一个副作用,将
jqvmap
添加到
jQuery
对象中;这就是为什么
\u jqvmapEmpty
变量本身是
未定义的
。不过,它可以通过jQuery获得,因此您可以使用与在非模块化代码中相同的方式来使用它