Чтобы обеспечить правильную изоляцию, я склонен обертывать каждый модуль 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
локальными для модуля? (т.е. я хотел бы убедиться, что они не определены в глобальной области действия или не вмешиваются в какое-либо другое определение вне этого модуля).