Both
module.exports
andexports
point to the samefunction database_module(cfg) {...}
.
1| var a, b;
2| a = b = function() { console.log("Old"); };
3| b = function() { console.log("New"); };
4|
5| a(); // "Old"
6| b(); // "New"
You can change b
on line 3 to a
, the output is reverse. The conclusion is:
a
andb
are independent.
So module.exports = exports = nano = function database_module(cfg) {...}
is equivalent to:
var f = function database_module(cfg) {...};
module.exports = f;
exports = f;
Assumed the above is module.js
, which is required by foo.js
. The benefits of module.exports = exports = nano = function database_module(cfg) {...}
is clear now:
In foo.js
, since module.exports
is require('./module.js')
:
var output = require('./modules.js')();
In moduls.js
: You can use exports
instead of module.exports
.
So, you will be happy if both exports
and module.exports
pointing to the same thing.