Ich habe ein Javascript Plugin geschrieben und möchte es mit requireJS kompatibel machen. Ich habe jedoch einige Schwierigkeiten, damit es richtig funktioniert. Ich denke meine AMD ist nicht richtig geschrieben oder so ähnlich.Javascript - Build Plugin für requireJS
Wenn ich versuche, den Plugin-Konstruktor auszuführen, ist er nicht definiert, nachdem requireJS das Skript geladen hat (die Callback-Variable von requirejs ist ebenfalls nicht definiert).
Zum Beispiel verwende ich requirejs wie folgt aus:
requirejs([
'./assets/js/myplugin.js'
], function(myplugin) {
console.log(myplugin); // undefined
new MyPlugin(); // undefined
});
Und in myplugin.js Ich habe dieses Skript:
(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;
}));
Das Skript richtig geladen ist (Asynchron) aber nichts festgelegt. Ich bin mir nicht ganz sicher, wie es funktioniert.
EDIT: hier die utils Skripte Beispiel:
// 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;
}));
Vielen Dank für Ihre Antwort. Es löst das Problem nicht und alles ist immer noch undefiniert. – freaky
Ich habe meine Antwort mit zwei anderen Problemen bearbeitet, die ich vorher nicht bemerkt habe. – Louis
Danke. Ich kann es nicht funktionieren lassen. Ich denke, ich bin verwirrt in der Art und Weise, wie ich meine alte Utilität richtig handhaben kann. Ich habe meine Frage bearbeitet, indem ich den ganzen Code der Utils hinzugefügt habe. – freaky