我正在移植我的旧JavaScript文件之一,以与requireJS兼容。以前是这样的代码。
// effect.js
(function(exports){
// shorthand
exports.effect = function(selector) {
return new Effect(selector);
};
// init
exports.Effect = function(selector){
this.target = document.getElementById(selector);
};
Effect.prototype.run = function(){
alert('halo');
};
})(this);
//invoke it with
effect('box').run();
试图使其与requireJS兼容:
// effect.js
define(function(exports){
// Shorthand
exports.effect = function(selector) {
return new Effect(selector);
};
// init
exports.Effect = function(selector){
alert('halo');
this.target = document.getElementById(selector);
};
Effect.prototype.run = function(){
alert('halo');
};
}
// require js
require([
'effect.js'
],function(Effect){
effect('box').run();
})
上面的代码无法运行,如何仅通过运行effect('box')。run()的速记来实现相同的结果。
最佳答案
试试看:
define(function() {
// init
var Effect = function(selector) {
this.target = document.getElementById(selector);
};
Effect.prototype.run = function(){
alert('halo');
};
// Replaces the 'shorthand' function from the first example
// This is returned as a module to the require call
return function(selector) {
return new Effect(selector);
}
});
require(['effect.js'], function(effect) {
effect('box').run();
});
关于javascript - 如何使此模块与requireJS兼容,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10312049/