Are node.js modules need to be wrapped inside the module pattern?
module, node.js
Solution
Variables declared within a module are local to that module. It is safe to omit your enclosing function.
From the Node.js docs:
Variables local to the module will be private, as though the module was wrapped in a function
Problem
To ensure proper isolation, I tend to wrap each node.js module that I write inside a function scope: ``` (function() { var express = require('express'); var jade = require('jade'); var moment = require('moment'); exports.someFunction = function() { // do something }; exports.otherFunction = function() { // do something else }; })(); ``` I've been doing this for some time now, but I have the feeling that node.js' module system is actually doing this for me, or (in other words) that the above code is equivalent to the following code: ``` var express = require('express'); var jade = require('jade'); var moment = require('moment'); exports.someFunction = function() { // do something }; exports.otherFunction = function() { // do something else }; ``` Are the two really equivalent? In particular, I am interested to know whether is the isolation level is the same: are the `express`, `jade` or `moment` variables local to the module? (i.e., I'd like to make sure that they are not defined in the global scope or interfere with any other definition outside of this module).