Что такое `require.context` - PullRequest
       18

Что такое `require.context`

0 голосов
/ 06 января 2019

Документы Webpack

You can create your own context with the require.context() function..
Отлично. Что такое «контекст»? Что это на самом деле делает?

It allows you to pass in a directory to search, a flag indicating whether subdirectories should be searched too, and a regular expression to match files against..
Позволяет мне "искать"? Поиск файлов я предполагаю, и что тогда? Что в конечном итоге делает эта функция? Для чего он используется?

1 Ответ

0 голосов
/ 07 января 2019

Одной из основных функций компилятора веб-пакета является рекурсивный анализ всех модулей, начиная с записей, для построения графика всех зависимостей модулей путем анализа require(), require.context(), import и import() выражения.

Обычная интерпретация «контекста» в веб-пакете и аналогично в Node.js - это некий каталог, который используется в качестве основы для определения путей к модулям. Например, текущий рабочий каталог используется в качестве контекста по умолчанию для веб-пакета для разрешения фактического пути к модулю ввода index.js; контекст для запроса require.resolve('../../../foo.js') равен __dirname.

require.context - это специальная функция, поддерживаемая компилятором webpack, которая позволяет вам получить все подходящие модули, начиная с некоторого базового каталога. Намерение состоит в том, чтобы сообщить веб-пакету во время компиляции преобразовать это выражение в динамический список всех возможных совпадающих запросов модуля, которые он может разрешить, в свою очередь добавив их в качестве зависимостей сборки и позволяя вам запрашивать их во время выполнения.

Короче говоря, вы бы использовали require.context в точно такой же ситуации, когда в Node.js во время выполнения вы использовали бы глобусы для динамического построения списка требуемых путей к модулям. Возвращаемое значение является вызываемым объектом, который ведет себя как require, ключи которого содержат необходимые данные запроса модуля, которые могут быть переданы ему в качестве аргумента для запроса модуля.

Существует несколько способов его использования, но я думаю, что два наиболее распространенных варианта использования - это либо автоматически требовать некоторые хорошо известные типы модулей (например, вы просто добавляете some.test.js тестовый модуль и в каком-то модуле, который вы используете require.context для динамического обнаружения всех тестов, таким образом, не нужно документировать и не забывать делать это вручную каждый раз, когда вы добавляете новый тестовый модуль) или загружать статические ресурсы в хранилище для отправки файлов на вывод сборки (новые пользователи веб-пакетов приходят из другие инструменты сборки обычно удивляются, что их изображения, шрифты, аудиофайлы и другие ресурсы не отображаются в выводе, если они не требуются от какого-либо модуля).

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