最新消息:Welcome to the puzzle paradise for programmers! Here, a well-designed puzzle awaits you. From code logic puzzles to algorithmic challenges, each level is closely centered on the programmer's expertise and skills. Whether you're a novice programmer or an experienced tech guru, you'll find your own challenges on this site. In the process of solving puzzles, you can not only exercise your thinking skills, but also deepen your understanding and application of programming knowledge. Come to start this puzzle journey full of wisdom and challenges, with many programmers to compete with each other and show your programming wisdom! Translated with DeepL.com (free version)

javascript - Scope of dependencies when exporting a module in Node.js - Stack Overflow

matteradmin8PV0评论

When exporting a module that has another dependency, is it best to include that dependency within the module export function or outside of it? I usually see the latter, but it seems like it would be best to keep it in the local scope.

For example:

var foo = require('foo');

module.exports = function(d) {
    return foo(d)/2;
}

vs.

module.exports = function(d) {
    var foo = require('foo');

    return foo(d)/2;
}

When exporting a module that has another dependency, is it best to include that dependency within the module export function or outside of it? I usually see the latter, but it seems like it would be best to keep it in the local scope.

For example:

var foo = require('foo');

module.exports = function(d) {
    return foo(d)/2;
}

vs.

module.exports = function(d) {
    var foo = require('foo');

    return foo(d)/2;
}
Share Improve this question asked Nov 19, 2014 at 4:32 jczaplewjczaplew 1,7511 gold badge18 silver badges22 bronze badges
Add a ment  | 

1 Answer 1

Reset to default 7

Only things exposed on module.exports and global can be accessed from other modules in node. Unlike in the browser, var creates a local reference. To quote from node's documentation:

In browsers, the top-level scope is the global scope. That means that in browsers if you're in the global scope var something will define a global variable. In Node this is different. The top-level scope is not the global scope; var something inside a Node module will be local to that module.

The difference between the two versions is therefore minimal - the first incurs a lookup in the local scope, while the other hits require.cache every time the function is invoked. From what I have seen of node code, the former (var someVar = require('something');) seems to be preferred.

Post a comment

comment list (0)

  1. No comments so far