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

为了确保适当的隔离,我倾向于将每个在一个函数范围内写入的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 }; 

这两个真的相当吗? 特别是,我有兴趣知道隔离级别是否相同:模块本地的expressjademomentvariables? (即,我想确保它们没有在全局范围内定义,或者干扰本模块之外的任何其他定义)。

在模块中声明的variables是该模块的本地variables。 省略你的封闭function是安全的。

从Node.js文档 :

模块本地的variables将是私有的,就像模块被封装在一个函数中一样