代码之家  ›  专栏  ›  技术社区  ›  Muhammad Umer

在Nodejs的模块之间共享对象的好模式是什么?

  •  0
  • Muhammad Umer  · 技术社区  · 6 年前

    我的情况是,我使用的是Websocket,只有一个Websocket服务器,有很多方法需要从服务器获取数据并修改服务器上的内容,例如删除不活动的套接字等等。

    现在我只是简单地通过函数调用和包装函数传递服务器实例,这会变得单调乏味,并且容易出错(循环依赖、输入错误等)

    导入服务器实例会导致循环依赖关系。

    通过参数传递它们会导致太多的相互依赖性。

    前任:

    onConnection -> attaches events 
    
    onMessage = msgHanlder(server);
    ...
    

    onNewMsg = newMsg(server)
    onDelete = delete(server)
    onRequest = request(server)
    

    这是非常函数式的编程,但太痛苦了。

    1 回复  |  直到 6 年前
        1
  •  0
  •   front_end_dev    6 年前

    创建一个缓存模块(get,set方法),并要求该模块管理不同模块之间的状态。

    缓存.js

    let _cache = {};
    module.exports = {
      "get":function(key){
         return _cache[key];
       },
      "set":function(key,value){
         _cache[key] = value;
        }
    }
    

    const cache = require('./cache');
    const b = require('./b');
    cache.set('a','value set in a');
    b.invoke();
    

    b、 js公司

    const cache = require('./cache');
    module.exports = {
      "invoke":function(){
          console.log("Module A: ",cache.get('a')); 
       }
    }