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