JQVMAP с requirejs

Как использовать векторные карты jquery с require.js в качестве модуля?

Совместим ли JVP с amd? Было бы замечательно, если бы кто-то мог дать ссылку на пример или предложить какой-то обходной путь

Я не могу использовать опцию shim, так как я использую старый require.js и не могу его обновить.

1 ответ

Вы можете обернуть библиотеку с 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
});

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>

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, поэтому вы можете использовать его так же, как и в немодулярном коде.

Другие вопросы по тегам