01. Modules
The modularity solves next issues:
code isolation,
dependency definition between modules,
delivering of the code into execution environment.
Модуль - это инкапсулированный блок кода, экспортирующий конкретные интерфейсы для использования другими модулями.
Модулем в ES6 считается любой
.js
-файл с кодом.Одному файлу соответствует один модуль и наоборот.
Внутри модуля могут находится объявления переменных, исполняемый код и т.д.
Все объявления переменных локальны внутри модуля.
Содержимое модуля в по умолчанию выполняется в строгом режиме.
Модуль выполняется один раз при загрузке. Первый импорт запускает выполнение тела модуля.
Даже если модуль импортируется множество раз, существует только один экземпляр модуля и его переменных.
В модуле ключевым словом
export
помечаются переменные и функции, которые могут быть использованы за пределами данного модуля, при помощиimport
выражения в другом модуле.Модуль может подключать определения в других модулях при помощи декларации
import
.Всегда выполняется импорт определений (bindings), а не значений.
Модули в ES6 resolved at compile-time.
Стандарт модулей ES6 отличается от предыдущих наработок прежде всего тем, что это стандарт. До этого модули в JS реализовывались или при помощи библиотек или при помощи сборщиков. NodeJS имеет собственную модульную систему, но на не реализована в браузерах.
Целью разработки модулей в ES6 являлось создание общего фундамента для единой модульной системы
Компактный синтаксис;
Compile-time резолюция модулей (for static checking, optimization, etc.);
Поддержка одиночного и множественного экспорта;
Поддержка циклических зависимостей;
Поддержка асинхронной загрузки модулей;
Конфигурация загрузки модулей;
Стандарт модулей из ES6 включает в себя:
Спецификация модуля.
Декларативный синтаксис экспорта/импорта модулей.
Спецификация загрузчика модулей.
Преимущества модулей:
Решают проблему конфликта имен, глобального объекта и глобальной области видимости.
Модульность и пере-использование кода.
Улучшается поддерживаемость кода.
Удобный экспорт по умолчанию (основной сценарий использования).
Компактный синтаксис.
Статическая структура зависимостей, позволяющая ряд оптимизаций
import
происходит только на верхнем уровне программы.Поддержка как синхронного, так и асинхронного режима при едином синхронном синтаксисе.
Поддержка циклических зависимостей.
Last updated
Was this helpful?