nodejs缓存与module.exports的问题

时间:2016-07-02 13:20:30

标签: javascript node.js caching module export

我是nodejs的新手。

我有这个脚本:book.js

var page = 0;

exports.setPageCount = function (count) {
    page = count; 
}

exports.getPageCount = function(){
    return page;
}

以及以下脚本:scripts.js

var bookA = require('./book');

var bookB = require('./book');

bookA.setPageCount(10);

bookB.setPageCount(20);

console.log("Book A Pages : " + bookA.getPageCount());

console.log("Book B Pages : " + bookB.getPageCount());

我得到的输出:

Book A Pages : 20
Book B Pages : 20

所以,我修改了脚本:

module.exports = function(){
    var page = 0;

    setPageCount  : function(count){
        page = count;
    },

    getPageCount : function(){

        return page;
    }

}

我期待以下输出:

Book A Pages : 10
Book B Pages : 20

但仍然得到了原始结果,有没有人知道我在哪里犯了错误?

1 个答案:

答案 0 :(得分:2)

有几种方法可以解决这个问题,你的最后一次尝试几乎是有效的 - 修改你的模块是这样的:

module.exports = function() {
  var pages = 0;
  return {
    getPageCount: function() {
      return pages;
    },
    setPageCount: function(p) {
      pages = p;
    }
  }
}

和你的用法如下:

var bookFactory = require('./book');
var bookA = bookFactory();
var bookB = bookFactory();
bookA.setPageCount(10);
bookB.setPageCount(20);
console.log("Book A Pages : " + bookA.getPageCount());
console.log("Book B Pages : " + bookB.getPageCount());