0

我正在尝试开发一个小型 Spotify 应用程序,但有一些问题。我有一个对象Foo,我想保存在一个单独的文件中,并在我的主文件中需要。然后在我的主文件中,我想创建这样的对象:var baz = new Foo(some, arguments). 但我无法让它工作。

我正在使用 API 的 1.0 版本,而 Spotify 以某种形式使用 requirejs,对吗?

示例:https ://github.com/spotify/apps-tutorial/blob/1.0/js/tutorial.js

所以,我尝试使用两个文件 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;

});

这在执行new Foo(..).

这是为什么?我猜是因为我在 foo.js 中使用了 require()?那我应该用什么代替呢?

编辑:好的,看来我应该使用exports,例如:exports.myMethod = myMethod;

但是然后我需要导出一个方法,该方法创建并返回一个 Foo 对象的实例及其所有实例方法等,对吗?

4

1 回答 1

0

我通过这样做解决了它:

//foo.js
require(['$api/models'], function(models) {

  var Foo = (function() {
    var foo = function(some, arg) {
        // Do stuff..
    };
    return foo;
  })();

  exports.Foo = Foo;
});

然后在 main.js 我像这样要求它: require(['scripts/foo#Foo']...

似乎工作正常。不知道这是否是最好的方法。

于 2013-07-26T20:50:12.627 回答