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