воскресенье, 31 марта 2019 г.
Модули
Концепция модулей как способа организации JavaScript-кода существовала давно.
Когда приложение сложное и кода много – мы пытаемся разбить его на файлы. В каждом файле описываем какую-то часть, а в дальнейшем – собираем эти части воедино.
Модули в стандарте ECMAScript предоставляют удобные средства для этого.
Такие средства предлагались сообществом и ранее, например:
- AMD – одна из самых древних систем организации модулей, требует лишь наличия клиентской библиотеки, к примеру, require.js, но поддерживается и серверными средствами.
- CommonJS – система модулей, встроенная в сервер Node.JS. Требует поддержки на клиентской и серверной стороне.
- UMD – система модулей, которая предложена в качестве универсальной. UMD-модули будут работать и в системе AMD и в CommonJS.
Все перечисленные выше системы требуют различных библиотек или систем сборки для использования.
Новый стандарт отличается от них прежде всего тем, что это – стандарт. А значит, со временем, будет поддерживаться браузерами без дополнительных утилит.
Однако, сейчас браузерной поддержки почти нет. Поэтому ES-модули используются в сочетании с системами сборки, такими как webpack, brunch и другими, при подключённом Babel.JS. Мы рассмотрим это далее.
Что такое модуль?
Модулем считается файл с кодом.
В этом файле ключевым словом
export помечаются переменные и функции, которые могут быть использованы снаружи.
Другие модули могут подключать их через вызов
import.Proxy
Прокси (proxy) – особый объект, смысл которого – перехватывать обращения к другому объекту и, при необходимости, модифицировать их.
Синтаксис:
let proxy = new Proxy(target, handler)
Здесь:
target– объект, обращения к которому надо перехватывать.handler– объект с «ловушками»: функциями-перехватчиками для операций кtarget.
Почти любая операция может быть перехвачена и обработана прокси до или даже вместо доступа к объекту
target, например: чтение и запись свойств, получение списка свойств, вызов функции (если target – функция) и т.п.
Различных типов ловушек довольно много.
Сначала мы подробно рассмотрим самые важные «ловушки», а затем посмотрим и на их полный список.
Если ловушки нет – операция идёт над
target
Если для операции нет ловушки, то она выполняется напрямую над
target.
