0

У меня возникло несколько вопросов с r.js. Я надеюсь, что кто-то может пролить свет.Проблемы с требованием js прокладки и r.js

Рассмотрим следующую подкладку:

shim: { 
    plugin: ['jquery'], 
    plugin2: ['jquery', 'plugin'] 
} 

И следующие произвольные модули (примечание: они не должны быть JQuery плагинов, но 2 должна зависеть от 1).

Plugin 1:

(function ($) { 
    $.test = function() { 
     console.log('from plugin 1'); 
    } 
})(jQuery); 

Plugin 2:

(function ($) { 
    $.test(); 
})(jQuery); 

r.js построит следующее:

(function ($) { 
    $.test = function() { 
     console.log('from plugin 1'); 
    } 
})(jQuery); 
define("plugin", function(){}); 

(function ($) { 
    $.test(); 
})(jQuery); 
define("plugin2", function(){}); 

это здорово - все в правильном порядке.

Однако, если мне нужно установить

wrapShim: true 

в нарастании конфигурации, я получаю это как выход:

(function(root) { 
    define("plugin", [], function() { 
     return (function() { 
      (function ($) { 
       $.test = function() { 
        console.log('from plugin 1'); 
       } 
      })(jQuery); 
     }).apply(root, arguments); 
    }); 
}(this)); 

(function(root) { 
    define("plugin2", [], function() { 
     return (function() { 
      (function ($) { 
       $.test(); 
      })(jQuery); 
     }).apply(root, arguments); 
    }); 
}(this)); 

Я не уверен, если я неправильно понимаю точку установка wrapShim к истине, но не следует это компилировать, чтобы:

define("plugin", ["jquery"], function() ... 

и

define("plugin2", ["jquery", "plugin"], function() ... 

?

Похоже, что wrapShim полностью игнорирует зависимости, установленные в прокладке.

ответ

0

На дальнейшей проверки во время написания этого поста он появляется, что если Зависимости перечислены в более виде:

shim: { 
    plugin: { 
     deps: ['jquery'] 
    }, 
    plugin2: { 
     deps: ['jquery', 'plugin'] 
    } 
} 

тогда зависимостей инъецируют правильно.

Смежные вопросы