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 };
这两个真的相当吗? 特别是,我有兴趣知道隔离级别是否相同:模块本地的express
, jade
或moment
variables? (即,我想确保它们没有在全局范围内定义,或者干扰本模块之外的任何其他定义)。
在模块中声明的variables是该模块的本地variables。 省略你的封闭function是安全的。
从Node.js文档 :
模块本地的variables将是私有的,就像模块被封装在一个函数中一样