2013-09-04 1 views
0

에 파일 stats.js 모든 기능을 한 수출 노드 모듈을 필요로합니다. 내가어떻게 제대로 내가

var stats = require("./stats"); 

내가 바로, stats.func1, stats.func2와 FUNC1 및 FUNC2을 얻을 수 있어야 할 때

그것의 내용은,

(function() { 
    func1 = function() { 

    } 
    func2 = function() { 

    } 

    module.exports = this; 

}).call(this); 

Alegedly입니까?

글쎄, 난 할 수 없습니다. 통계 개체는 비어 있습니다. stats.js에있는 몇 가지 흔적은 "this"도 빈 객체임을 나타냅니다.

무엇을 제공합니까?

+0

는 전역 객체에 기능을 할당하려고 목적에 당신 된 후 전역 개체를 내보내려고? –

+0

나는 그것을 원한다고 생각하지 않는다. 파일을 요구 한 다음 stats.func를 수행하여 함수에 액세스 할 수 있기를 원합니다. –

+0

큰 질문! – Tushar

답변

0

아니요? 이 형식은 Node.js가 작업을 수행하는 데 필요한 것과 같지 않습니다.

"는 무엇 제공하는 것은"어떻게 노드 작품에 읽을하지 않은 것입니다. Node.js는 "자바 스크립트"뿐만 아니라 훨씬 더 풍부한 API와 특정 동작을 가진 프리 롤밍 모델입니다. "module.exports"객체를 사용해야하므로 노드 사용법을 실제로 읽는 것이 좋습니다.

mything.js :

var func3 = function() { ... }, 
    prop = "something"; 
... 
module.exports = { 
    func1: function() { ... }, 
    func2: function() { ... }, 
    func3: funct3, 
    prop: prop, 
    ... 
}; 

동일 :

var func3 = function() { ... }, 
    prop = "something", 
    ... 
    MyLib = { 
     func1: function() { ... }, 
     func2: function() { ... }, 
     func3: funct3, 
     prop: prop, 
     ... 
    }; 
... 
module.exports = MyLib; 

app.js :

var mything = require("mything); 
+0

글쎄, 나는 그 자신을 생각하지 않았다. 당신은 그것을 확신 할 수있다. 나는 그것을 어딘가에서 읽었다. 밑줄은 매우 비슷한 것을하지만 코드는 이해하기에 너무 혼란 스럽습니다. 그것이 분명히하지 않는 것은 당신이 여기서 쓴 것입니다. –

+0

아마도 그 이름이 너를 혼란스럽게 만들었을 것이다. "Node.js"는 자바 스크립트 라이브러리가 아닙니다. 콜백 기반 이벤트 시스템을 사용하여 JavaScript 구문을 사용하여 스크립트를 작성하고 패키지 가져 오기를 포함한 전체 표준 라이브러리를 사용하여 노드 API로 공식화 된 서버 측 엔진의 이름입니다. 사실상 아무 것도 할 수 없습니다 클라이언트 측 라이브러리에서'

1

최우선 this 링크 참조. 이 코드에서

var stats = require("./stats"); 
    //My steps - 

    //First Log 
    console.log(stats.func1); // returns undefined 
    //Second Log 
    console.log(global.func1, global === GLOBAL); // returns [Function], true 

를 적어가는 요리 - - 브라우저에서
1. 전역 객체가 window 개체입니다

이제 코드를 볼 수 있습니다.
2. node.js는 global 개체입니다.
3. 을 모듈에 정의하여var을 사용하면 module 범위의 변수 만 생성됩니다.
없이 을 정의하면 var 키워드는 전역 범위에서 변수를 만듭니다.

그래서 func1func2

는 전역 범위에 정의되었다. 이 값을 module.exports으로 전달하면 현재 모듈 객체 만 전달됩니다.

행복 코딩, 그것은 도움이되기를 바랍니다!