私はJavascriptプラグインを書きました。私はrequireJSと互換性を持たせたいと思っています。しかし、私はそれが適切に動作するようにいくつかの困難があります。私は私のAMDが正しく書かれていないか、このようなものだと思う。Javascript - requireJSのプラグインを構築する
プラグインコンストラクターを実行しようとすると、requireJSがスクリプトをロードした後で定義されません(requirejsからのコールバック変数も定義されていません)。
requirejs([
'./assets/js/myplugin.js'
], function(myplugin) {
console.log(myplugin); // undefined
new MyPlugin(); // undefined
});
そしてmyplugin.jsに、私はこのスクリプトを持っている:私はこのようなrequirejs使用たとえば
(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
前に気付かなかった2つの問題で自分の答えを編集しました。 – Louis
ありがとうございます。私はそれを働かせることはできません。私は、古い私のutil依存関係を正しく処理する方法を混乱させると思います。私はutilsのすべてのコードを追加して私の質問を編集しました。 – freaky