2015-01-07 1 views
0

나는 내용으로 자바 스크립트 파일이있는 경우 :Browserify를 사용할 때 javascript 파일의 내보내기를 캡처하는 방법은 무엇입니까?

(function() { 
    return function (foo) { 
    return foo + "bar"; 
    }; 
}()); 

어떻게 든 변수에 해당 파일의 반환 값을 캡처 할 수 있습니까? 함수가 자동 인스턴스화 괄호로 반환 된 다음 가비지 수집 된 것으로 가정하고 있지만 잘 모르겠습니다.

제쳐두고, 나는 테스팅 목적을 위해 노드 모듈의 브라우저 화 된 콜렉션을 노출하려고합니다. (아마도 이것에 대해 다른 방법이있을 것입니다. 그러나 이것에 대해 궁금합니다.)

+0

당신이 평범한 텍스트로 그것을 ajaxed하고 그것을 eval'n 전에 조금 조작하지 않는다면 그렇게 생각하지 마십시오. –

+0

nope. 콜백 형식을 사용해야합니다. –

+2

파일에 반환 값이 없으면 함수가 수행합니다. 그리고 네, 리턴은 변수에 할당되지 않았으므로 그것에 대한 참조가 없으며 가비지 수집됩니다. – nnnnnn

답변

2

browserify (또는 다른 CommonJS 호환 시스템)에 포함 된 파일은 메소드 또는 값을 module.exports을 통해 필요한 파일에 노출 할 수 있습니다. 문에서 module.exports이 반환됩니다.

하는 index.js

var myClass = require("myClass"); 

myClass.js

module.exports = (function() { 
    return function (foo) { 
     return foo + "bar"; 
    }; 
}()); 

하는 index.js 지금 myClass가에 내장 된 기능에 액세스 할 수 있습니다

이 예제를 가지고 .js이며 다음과 같이 사용할 수 있습니다.

하는 index.js

var myClass = require("myClass"); 
// expose the class to the global scope 
window.myClass = myClass; 
var result = myClass("foo "); 

그래서 VAR result는 값 "foo bar"있을 것입니다.

+0

약간 다른 질문에 대한 훌륭한 대답! :)이 경우 내 질문은 브라우저에서 테스트를 실행하는 방법입니다. 브라우저 간 불일치가 발생할 가능성이 많은 비디오 플레이어 아키텍처에서 작업하므로 브라우저 매트릭스에서 플레이어 구성 요소를 단위 테스트 할 방법이 필요합니다. – Shane

+0

이 기능은 browserify를 사용하는 경우 브라우저에서 작동합니다. –

+0

브라우저에서 실행되는 모듈에 대한 액세스 권한이있는 테스트를 배치 할 수있는 공통 클로저가 생성된다고 가정합니다. 또는 브라우저 화 된 스크립트를로드하고 require ("myClass")를 호출하여 모듈을 추출 할 수있는 방법이 있다는 것을 의미합니까? – Shane

관련 문제