2013-07-26 1 views
0

작은 Spotify 앱을 개발하려고하지만 몇 가지 문제가 있습니다. 오브젝트 Foo을 별도의 파일에 보관하고 메인 파일에 필요합니다. 그런 다음 주 파일에서 var baz = new Foo(some, arguments)과 같은 개체를 만들고 싶습니다. 그러나 나는 그것을 작동시킬 수 없다.Spotify app, 맞춤 모듈 만들기

나는 1.0 버전의 API를 사용하고 있으며, Spotify는 requirejs를 어떤 형태로 사용합니다. 맞습니까?

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

그래서, 나는이 사용하는 두 개의 파일, foo.js 및 main.js.처럼하려고 노력 new Foo(..)을 할 때

이 나에게 오류를 제공
// 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; 

}); 

주 파일에서 "개체는 함수가 아닙니다."

왜 그럴까요? 나는 foo.js에서 require()를 사용하기 때문이라고 생각한다. 그 대신에 내가 무엇을 사용해야합니까?

편집 : 보인다 그래서 좋아, 내가 같은 exports 사용해야합니다 : exports.myMethod = myMethod;

을하지만 내가 생성 등의 인스턴스 메서드의 모든으로 푸 개체의 인스턴스를 반환하는 방법을 내 보내야합니다 , 권리? 나는이처럼이 필요 main.js에서 다음

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

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

    exports.Foo = Foo; 
}); 

:

답변

0

나는이 일을함으로써 그것을 해결 필요한 ([ '스크립트/foo는 #의 푸'] ...

가 보인다 그래도 최선의 접근법인지 모른다.

+0

예에서 Foo의 값은 foo 함수이지만, 평소와 같이 함수를 작성하는 것으로 충분하며' 수출하고 싶다 '는 것이다. –