Понимание выполнения кода с помощью модулей ES6 - PullRequest
0 голосов
/ 27 мая 2018

Вопросы упоминаются внизу

Я уже довольно давно использую Webpack для своих сборок React.

Я заинтересовался модулями ES6,о разделении и выполнении кода.

Итак, я пришел к следующему тестовому коду, чтобы понять поведение модулей.

Код находится в папке src.Webpack связывает код, а затем bundle.js запускается с node ./dist/bundle.js в термине

Код:

. / Src / index.js

import node1 from "./node1";   
import node2 from "./node2";

function part() {
  node1();
  node2();
}

part();

. / src / node1.js

import test, { x } from "./test";

function node1() {
  console.log("node1", x, new Date().getTime());
  test();
  console.log("node1", x, new Date().getTime());
}

export default node1;

. / src / node2.js

import test, { x } from "./test";

function node2() {
  console.log("node2", x, new Date().getTime());
  test();
  console.log("node2", x, new Date().getTime());
}

export default node2;

. / Src / test.js

let x = 1;
console.log(x, new Date().getTime());

function test() {
 console.log(
  "This is test for understanding dependency graph",
  x++,
  new Date().getTime()
 );
}

export default test;

export { x };

Результат выполнения

enter image description here

Вопрос: Я ожидаю, что экспортированное значение x останется постоянным.Почему это не так?

Вопрос: Отображается ли поведение во время выполнения из-за связывания webpack или более неотъемлемой части import\export спецификации модулей ES6?

1 Ответ

0 голосов
/ 27 мая 2018
  1. В модуле ES6 экспортное значение - это не реальное значение, а неизменяемая привязка.Проще говоря, x в node1.j является неизменной ссылкой на x в test.js
  2. Именно по конструкции модуля ES6

Вы можете прочитать больше здесь: http://2ality.com/2015/07/es6-module-exports.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...