Nie ma szczegółowego wyjaśnienia, co dokładnie es6 importuje i eksportuje pod maską. Ktoś opisuje import jako widok tylko do odczytu. Sprawdź kod poniżej:es6 importowanie jako tylko do odczytu zobacz zrozumienie
// lib/counter.js
export let counter = 1;
export function increment() {
counter++;
}
export function decrement() {
counter--;
}
// src/main.js
import * as counter from '../../counter';
console.log(counter.counter); // 1
counter.increment();
console..log(counter.counter); // 2
Moje pytanie brzmi, czy dwa moduły importować ten sam moduł licznika i pierwszy moduł zwiększamy licznik, będzie drugi moduł zobaczyć również jako licznik zwiększany? Co pod maską robią "import" i "eksport"? W jakim kontekście wykonywana jest funkcja przyrostu? Czym jest obiekt zmienny funkcji increment?
// lib/counter.js
export let counter = 1;
export function increment() {
counter++;
}
export function decrement() {
counter--;
}
// src/main1.js
import * as counter from '../../counter';
console.log(counter.counter); // 1
counter.increment();
console..log(counter.counter); // 2
// src/main2.js
import * as counter from '../../counter';
console.log(counter.counter); // what is the result of this, 1 or 2?
Wydaje mi się, że „eksport” jest stworzenie globalnego obiektu, który można uzyskać dostęp za pomocą różnych modułów i wyznacza kontekst eksportowanego funkcję do tego obiektu. Jeśli tak jest, projekt jest dla mnie okablowany, ponieważ moduły nie wiedzą, co robią inne moduły. Jeżeli dwa moduły importują ten sam moduł (licznik), jeden moduł wywołuje funkcję przyrostu (przykład powyżej), który powoduje zmianę wartości (licznik), drugi moduł tego nie zna.
Najwyraźniej nie czytałeś http://exploringjs.com/es6/ch_modules.html lub https://hacks.mozilla.org/2015/08/es6-in-depth-modules/ – Bergi