0

如何将jquery 矢量地图与 require.js 作为模块一起使用?

JVP AMD 兼容吗?如果有人可以链接到示例或建议一些解决方法,那就太好了。

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

4

1 回答 1

0

您可以自己包装库define,有效地实现该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
});

索引.html

<html>
  <head>
    <script data-main="index" src="require.js"></script>
  </head>
  <body>
    <div id="vmap" style="width: 600px; height: 400px;"></div>
  </body>
</html>

index.js

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
   });
})

解释一下:插件将自己添加到 jQuery 中,它没有“独立”版本。jqvmap包装器模块不返回任何内容,它只是具有添加到jQuery对象的副作用;这就是为什么_jqvmapEmpty变量本身是undefined. 不过,它可以通过 jQuery 获得,因此您可以像在非模块化代码中那样使用它。

于 2013-05-23T21:39:10.403 回答