node.js模块是否需要包装在模块模式中?

时间:2014-02-03 15:34:07

标签: node.js module

为了确保正确的隔离,我倾向于包装我在函数范围内编写的每个node.js模块:

(function() {
  var express = require('express');
  var jade = require('jade');
  var moment = require('moment');

  exports.someFunction = function() {
    // do something    
  };

  exports.otherFunction = function() {
    // do something else
  };
})();

我已经这样做了一段时间了,但我觉得node.js'模块系统实际上是为我做的,或者(换句话说)上面的代码等同于以下代码:

var express = require('express');
var jade = require('jade');
var moment = require('moment');

exports.someFunction = function() {
  // do something    
};
exports.otherFunction = function() {
  // do something else
};

两者真的相同吗? 特别是,我很想知道隔离级别是否相同:模块本地的expressjademoment变量是什么? (即,我想确保它们未在全局范围内定义或干扰本模块之外的任何其他定义。)

1 个答案:

答案 0 :(得分:38)

模块中声明的变量是该模块的本地变量。省略封闭功能是安全的。

来自Node.js docs

  

模块的本地变量将是私有的,就好像模块包含在函数

中一样