Javascript Spotify应用程序,创建自定义模块
我正在尝试开发一个小型Spotify应用程序,但有一些问题。我有一个对象Javascript Spotify应用程序,创建自定义模块,javascript,spotify,Javascript,Spotify,我正在尝试开发一个小型Spotify应用程序,但有一些问题。我有一个对象Foo,我想把它保存在一个单独的文件中,并需要保存在我的主文件中。然后在我的主文件中,我想创建如下对象:var baz=newfoo(一些,参数)。但我不能让它工作 我使用的是API的1.0版本,Spotify以某种形式使用了requirejs,对吗 例如: 所以,我试着用两个文件foo.js和main.js这样做 // main.js require([ '$api/models', 'foo'], functio
Foo
,我想把它保存在一个单独的文件中,并需要保存在我的主文件中。然后在我的主文件中,我想创建如下对象:var baz=newfoo(一些,参数)
。但我不能让它工作
我使用的是API的1.0版本,Spotify以某种形式使用了requirejs,对吗
例如:
所以,我试着用两个文件foo.js和main.js这样做
// main.js
require([
'$api/models',
'foo'], function(models, Foo) {
var f = new Foo("hello", "world");
...
});
// foo.js
// define() doesn't work? So I tried with require again...?!
require(['$api/models'], function(models) {
function Foo(some, arg) {
this.some = some;
this.arg = arg;
}
Foo.prototype.getSome() { return this.some; }
return Foo;
});
在执行newfoo(…)
时,这会在主文件中显示一个错误“对象不是函数”
为什么呢?我想这是因为我在foo.js中使用了require()?那么我应该用什么来代替呢
编辑:
好的,看来我应该使用导出,比如:exports.myMethod=myMethod代码>
但是我需要导出一个方法,该方法创建并返回一个Foo对象的实例及其所有实例方法等,对吗?我这样做解决了这个问题:
//foo.js
require(['$api/models'], function(models) {
var Foo = (function() {
var foo = function(some, arg) {
// Do stuff..
};
return foo;
})();
exports.Foo = Foo;
});
然后在main.js中,我要求如下:
需要(['scripts/foo#foo']]
似乎还可以。但不知道这是否是最好的方法。也可以,不过在您的示例中,Foo的值是Foo函数。像往常一样编写函数,并将要公开的函数分配给导出
就足够了。