Я наложил плагин Javascript, и я хочу сделать его совместимым с requireJS. Однако у меня есть некоторые трудности, чтобы заставить его работать должным образом. Я думаю, что моя AMD неправильно написана или что-то в этом роде.Javascript - построить плагин для requireJS
Когда я пытаюсь выполнить конструктор плагина, он не определен после того, как requireJS загрузил скрипт (также не определена переменная обратного вызова из requirejs).
Например, я использую requirejs так:
requirejs([
'./assets/js/myplugin.js'
], function(myplugin) {
console.log(myplugin); // undefined
new MyPlugin(); // undefined
});
И в myplugin.js У меня есть этот скрипт:
(function (root, factory) {
if (typeof define === 'function' && define.amd) {
define(
'myplugin',
['brandname-util1/util1',
'brandname-util2/util2',
'brandname-util3/util3'],
factory
);
} else if (typeof exports === 'object' && module.exports) {
module.exports = factory(
root,
require('brandname-util1'),
require('brandname-util2'),
require('brandname-util3')
);
} else {
root.MyPlugin = factory(
root,
root.BrandNameUtil1,
root.BrandNameUtil2,
root.BrandNameUtil3
);
}
}(this, function factory(root, util1, util2, util3) {
'use strict';
var MyPlugin = function() {
}
return MyPlugin;
}));
Скрипт правильно загружен (Асинхронный), но ничего не определено. Я не совсем понимаю, как это работает.
EDIT: вот пример Utils скрипты:
// util1
(function(root, factory) {
if (typeof define === 'function' && define.amd) {
define(
'brandname-util1/util1',
['jquery'],
factory
);
} else if (typeof module === 'object' && module.exports) {
module.exports = factory(require('jquery'));
} else {
root.BrandNameUtil1 = factory(root);
}
}(this, function() {
"use strict";
var util1 = {};
// declare some functions
return util1;
}));
// util2
(function(root, factory) {
if (typeof define === 'function' && define.amd) {
define(
'brandname-util2/util2',
['jquery'],
factory
);
} else if (typeof module === 'object' && module.exports) {
module.exports = factory(require('jquery'));
} else {
root.BrandNameUtil2 = factory(root);
}
}(typeof window !== "undefined" ? window : this, function() {
"use strict";
var util2 = function() {},
proto = util2.prototype;
// declare some proto
return util2;
}));
// util3
(function (root, factory) {
if (typeof define === 'function' && define.amd) {
define(
'brandname-util3/util3',
['brandname-util1/util1',
'brandname-util2/util2'],
factory
);
} else if (typeof module === 'object' && module.exports) {
module.exports = factory(
root,
require('brandname-util1'),
require('brandname-util2')
);
} else {
root.BrandNameUtil3 = factory(
root,
root.BrandNameUtil1,
root.BrandNameUtil2
);
}
}(this, function (root, util1, util2) {
"use strict";
var util3 = function() {},
proto = util3.prototype;
// declare some proto
return util3;
}));
Благодарим вас за ответ. Это не решает проблему, и все еще не определено. – freaky
Я отредактировал свой ответ с двумя другими проблемами, которые я раньше не заметил. – Louis
Спасибо. Я не могу заставить его работать. Я думаю, что я запутался в правильном обращении со старой моей зависимостью от использования. Я отредактировал свой вопрос, добавив весь код utils. – freaky