Что означает Модули ECMAScript полностью статичны?

я новичок в js и мне Не совсем знаком термин статичны.Что означает Модули ECMAScript полностью статичны ?
  • Вопрос задан
  • 219 просмотров
Решения вопроса 2
Это значит, что модуль загружается в память и инициализируется только один раз. Любой require этого модуля вернёт ту же самую ссылку на него. Это значит, что переменные, объявленные на уровне модуля, будут сохранять своё состояние в процессе работы программы, в том числе при обращении из разных модулей. С этой позиции можно считать нодовские модули синглтонами.
Ответ написан
@tjbulick
Для начала разберемся с динамической структурой: то, что импортируется и экспортируется, может меняться во время рантайма (англ. runtime).
Когда мы используем статическую структуру, это значит, что мы можем определить все импорты и экспорты только один раз, во время компиляции (модулей в бандл - большой общий файл грубо говоря).
Также при статической структуре модулей нам не надо выполнять код модуля, чтобы найти все импорты и экспорты. Они располагаются на верхнем уровне, потому что система модулей ES6 заставляет нас располагать импорты и экспорты в глобальном скоупе (англ. scope). Мы просто смотрим на исходный код и видим, что экспортируется и импортируется и самое главное что это неизменно на протяжении всего рантайма.
Инструкции import и export также не должны иметь динамических частей.

В конце покажу два примера НЕстатической структуры (чтобы стало понятно, как отличать одно от другого):

Мы должны выполнить этот код, чтобы понять, что он будет импортировать:
let my_lib;
if (Math.random()) {
    my_lib = require('foo');
} else {
    my_lib = require('bar');
}

Во втором примере мы должны запустить код, чтобы узнать, что он экспортирует:
if (Math.random()) {
    exports.baz = ···;
}

Этот подход является менее гибким, чем динамический, но у него есть много своих преимуществ. Почитать о них и посмотреть примеры можно вот здесь: , пункт "16.8 Design goals for ES6 modules".
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
от 110 000 до 150 000 руб.
Александрия Москва
от 200 000 до 250 000 руб.
Алгоритмика Москва
от 120 000 до 200 000 руб.
24 авг. 2019, в 11:59
5000 руб./за проект
24 авг. 2019, в 11:31
30000 руб./за проект
24 авг. 2019, в 10:59
750 руб./за проект