En la sintaxis `import` de ES6, ¿cómo se evalúa exactamente un módulo?

Digamos que tenemos cuatro módulos,A, B,C yD

En el móduloA:

console.log("A evaluated")
function AClass {
  console.log("A constructor")
}
var aObj = new AClass()
export default aObj;

En el móduloB:

import aObj from A
export default "B"

En el móduloC:

import aObj from A
export default "C"

En el móduloD:

import b from B
import c from C
import aObj from A

Entonces cuando el móduloD se evalúa, cuántas vecesA evaluated yA constructor ser impreso en la consola?

¿Se describe este comportamiento enEstándar ES6? ¿Qué debo hacer si quiero que un módulo sea evaluado SOLO UNA VEZ, sin importar cuántas veces se importe directa o indirectamente? ¿Alguien tiene alguna idea acerca de esto?

Respuestas a la pregunta(1)

Su respuesta a la pregunta