node如何将vars转换为require模块

时间:2014-08-05 11:17:09

标签: javascript node.js

我只是想知道是否有任何最佳/推荐的方法将变量放入节点js所需的模块中?应该避免什么?

到目前为止,我知道以下方法:

按功能参数

mymodule = require('./modules/mymodule.js')(varA,varB);
... and ...
module.exports = function (varA, varB) {}
不知道怎么称呼它?

mymodule = require('./modules/mymodule.js').varA;
... and ...
module.exports = function (varA, varB) {
    console.log(varA)
}

通过setter类

mymodule = require('./modules/mymodule');
... and ...
module.exports = function () {
    var that = this;
    this.varA = null;
    this.setVarA = function(varA) {that.varA = varA:}
}

谢谢,我真的很感谢你的专家

1 个答案:

答案 0 :(得分:0)

我认为您尝试做的一种方法是使用setter和getter在模块中创建一个对象:

function MyObject( varA ) {
  this._varA = varA;
}

MyObject.prototype.setVarA = function( varA ) {
  this._varA = varA;
}

MyObject.prototype.getVarA = function() {
  return this._varA;
}

module.exports = MyObject;

并使用

var MyObject = require( './myModule' );

var myObjectInstance = new MyObject( "someValue" );

console.log( myObjectInstance.getVarA() ); //logs someValue

myObjectInstance.setVarA( "anotherValue" );

console.log( myObjectInstance.getVarA() ); //logs someOtherValue

这篇MDN Working With Objects文章提供了一些与此相关的好信息。

上面的方法对于你正在寻找的东西可能有点过分,所以你只需要一个对象文字即可做更简单的事情:

module.exports = function( varA ) {
  return {
    varA : varA
  };
};

并使用

var myModule = require( './myModule' )( "someValue" );
console.log( myModule.varA ); // logs someValue