Использование собственного плагина Jquery с requireJS

Извините, если я повторяю этот вопрос, но я новичок в requireJS и не совсем понимаю, как это работает.

Я пытаюсь реализовать амазоноподобную навигацию с диагональным перемещением по элементам. Я нашел для этого плагин jQuery ( https://github.com/kamens/jQuery-menu-aim), но я хочу реализовать его с помощью requireJS.

Как правило, вы просто включаете все необходимые скрипты с <script> тег (Jquery и плагин). Затем вы найдете свою навигацию и назначите некоторые функции для активации / деактивации подменю. Как пример:

          <script src="js/jquery-1.9.1.min.js" type="text/javascript"></script>
            <script src="../jquery.menu-aim.js" type="text/javascript"></script>
            <script src="js/bootstrap.min.js" type="text/javascript"></script>
            <script>
                var $menu = $(".dropdown-menu");
                // jQuery-menu-aim: <meaningful part of the example>
                 // Hook up events to be fired on menu row activation.
               $menu.menuAim({
                    activate: activateSubmenu,
                    deactivate: deactivateSubmenu
                });

           function activateSubmenu(row) {//do something}
           function deactivateSubmenu(row) {//do someting else)
         </script>

В обязательном порядке. В файле navigation.js вначале мне потребовался плагин меню-прицеливания, и я попытался реализовать его так:

 var menuAim = require('lib/menu-aim');
 // some code
 var $menuT = $('#nav-main-deep');
 $menuT.menuAim({
        activate: activateSubmenu,
        deactivate: deactivateSubmenu

  });
   function activateSubmenu(){
        console.log('test1');
    }

    function deactivateSubmenu() {
        console.log('test2');
    }

И я поместил весь плагин menu-aim.js между:

define(function () {
//whole menu-aim plugin
});

Вероятно, это не тот способ, как запустить плагин requireJS, потому что он ничего не делает (я попытался сделать несколько журналов консоли). Я пытался посмотреть на requireJS doc, но я все еще не понимаю, как это сделать правильно. Буду очень благодарен за советы..

1 ответ

Решение

Из кода GitHub это выглядит так jQuery-menu-aim не использует определение универсального модуля, поэтому ему нужна помощь из вашей конфигурации RequireJS.

shim может помочь RequireJS упорядочить зависимости, так как это плагин jQuery, и jQuery должен быть загружен первым и передан в него. Нажмите здесь для получения дополнительной информации о прокладках RequireJS.

Добавьте этот код в ваш файл конфигурации RequireJS

requirejs.config({
  shim: {
    'menu-aim': {
        deps: ['jquery']
    }
  }
});

и когда вы звоните

require('lib/menu-aim', function() { 
  // put your menu code here 
});

jQuery и плагин меню будут загружены.

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