2012-08-13 4 views
0

Stateful Node.js 모듈을 사용할 수 있습니까? Like :상태 보존 형 싱글 톤 모듈

exports.connectionsCache = new (function() { 
    var cache = {}; 

    this.getOrCreate = function (url) { 
     if (!cache[url]) { 
      cache[url] = new Connection(url); 
     } 
     return cache[url]; 
    }; 
}()); 

require 번은 상태를 유지합니까? 아니면 하나의 전역 객체를 사용해야합니까?

답변

5

require 이미 모듈을 캐시 :

test2.js :

module.exports = { 
    state: 0 
}; 

test.js

var state = require("./test2.js"); 

state.state = 3; 

console.log(state.state); 

var state2 = require("./test2.js"); 

console.log(state2.state); 

state2.state = 4; 

console.log(state.state); 

$ node test.js 
3 
3 
4 
+0

냉각 출력, 감사합니다! 그렇다면 RabbitMQ 서버에 대한 연결을 모듈에 캐싱하는 것은 괜찮습니까? – katspaugh

+1

글쎄, 그래. 캐시를 삭제하는 데'require'가 필요하다는 점을 명시해야합니다. 실수로 삭제되지는 않습니다. 여기에 당신이해야 할 일이 있습니다 (하지 마라, 나는 그것이 왜 필요할 지 알지 못한다) : http://stackoverflow.com/a/9210901/995876 – Esailija