Home > Net >  Does importing javascript modules only run them once?
Does importing javascript modules only run them once?

Time:01-05

If I import a module A inside both module B and C, is the code inside A executed 2 times in total? That means if I call fetch() inside A, will fetch() be called 2 times?

e.g.

//file: A.js
var A = {
  init: false,
  count: 0
};

if(A.init == false) {
  A.init = true;
  A.value = fetch("https://...");
}

I thought module codes are only executed once for the lifetime of the webpage no matter how many times they are imported?

So if inside module B I set A.count = 1, then inside module C, the value of A.count is also 1.

But according to "Import a module for its side effects only" at:

enter image description here

CodePudding user response:

The code from Module A will be executed 2 times! Once in Module B and again in Module C.

Module A

function foo() {
  return 'yo I`m in module A being executed in... ';
}

module.exports = foo();

Module B

const foo = require('./moduleA');

console.log(`${foo} in module B`);

Module C

const foo = require('./moduleA');

console.log(`${foo} in module C`);
  •  Tags:  
  • Related