Diciamo che abbiamo quattro moduli, A
, B
, C
e D
Nella sintassi `import` di ES6, come viene valutato esattamente un modulo?
Nel modulo A
:
console.log("A evaluated")
function AClass {
console.log("A constructor")
}
var aObj = new AClass()
export default aObj;
nel modulo B
:
import aObj from A
export default "B"
nel modulo C
:
import aObj from A
export default "C"
Nel modulo D
:
import b from B
import c from C
import aObj from A
Così, quando il modulo viene valutata D
, quante volte sarà il A evaluated
e A constructor
essere stampato nella console?
Questo comportamento è descritto in standard ES6? Cosa devo fare se voglio che un modulo venga valutato SOLO UNA VOLTA indipendentemente da quante volte viene importato direttamente o indirettamente? Qualcuno ha qualche idea su questo?
Solo dicendo, non devi esportare le istanze, devi sempre esportare la classe - o se hai solo bisogno di oggetti, non dovresti usare le classi. – Bergi
@Bergi Grazie, ma cosa devo fare se ho bisogno di un'istanza globale singleton globale in moduli diversi ... Forse l'esportazione delle istanze è l'unico modo .. –
Puoi usare semplici letterali oggetto per creare singoletti. Non c'è bisogno di 'class'es. – Bergi