是否可以访问同一文件中的其他模块导出功能?

时间:2012-05-18 22:59:45

标签: javascript node.js

我在同一个文件中有两个函数,都是从外部访问的。其中一个功能由第二个调用。

module.exports.functionOne = function(param) {
    console.log('hello'+param);
};

module.exports.functionTwo = function() {
    var name = 'Foo';
    functionOne(name);
};

执行此操作时,对functionOne的调用将标记为未定义。

参考它的正确方法是什么?

我发现的一种模式是引用文件本身。

var me = require('./thisfile.js');
me.functionOne(name);

......但感觉必须有更好的方法。

3 个答案:

答案 0 :(得分:19)

只需module.exports.functionOne()

如果这太麻烦,只需执行以下操作:

function fnOne() {
    console.log("One!");
}

module.exports.fnOne = fnOne;

答案 1 :(得分:3)

var me = require(module.filename);
me.functionOne(name);

或只使用出口对象本身

module.exports.functionOne(name);

答案 2 :(得分:0)

我想我一直在考虑要求是相当于包含,导入等等。如果有另一种方法,它可能会很有趣。我仍然在节点后面湿透了。

在帮助代码组织方面,

James Herdmans Understanding Node.js "require"帖子确实帮助了我。绝对值得一看!

// ./models/customer.js
Customer = function(name) {
  var self = this;
  self.name = name;

};

// ./controllers/customercontroller.js
require("../models/customer");

CustomerController = function() {
  var self = this;

  var _customers = [
   new Customer("Sid"),
   new Customer("Nancy")
  ];
  self.get() {
   return _customers;
  }
};