Манифест
В типичном приложении или сайте, созданном с помощью webpack, есть три основных типа кода:
- Исходный код, написанный вами и, возможно, вашей командой.
- Любой код сторонней библиотеки или «вендорский» код, от которого зависит ваш исходный код.
- Запуск webpack и манифест, которые обеспечивают взаимодействие всех модулей.
Эта статья будет посвящена последней из этих трёх частей: запуску и, в частности, манифесту.
Запуск
Запуск, вместе с данными манифеста, представляет собой весь код, необходимый webpack для подключения вашего модульного приложения во время его работы в браузере. Он содержит логику загрузки и разрешения, необходимую для подключения ваших модулей по мере их взаимодействия. Это включает подключение модулей, которые уже загружены в браузер, а также логику ленивой загрузки тех, которые ещё не загружены.
Манифест
Как только ваше приложение попадает в браузер в виде index.html файла, некоторые пакеты и различные другие ресурсы, необходимые вашему приложению, должны быть загружены и связаны каким-то образом. Этот /src каталог, который вы так тщательно организовали, теперь скомпонован, сжат и, возможно, даже разделён на более мелкие фрагменты для ленивой загрузки с помощью webpack's optimization. Итак, как webpack управляет взаимодействием между всеми необходимыми вам модулями? Здесь вступают в игру данные манифеста…
По мере того, как компилятор входит в приложение, разрешает и отображает его, он записывает подробные заметки обо всех модулях. Эта совокупность данных называется «Манифестом», и именно её запуск использует для разрешения и загрузки модулей после их сборки и отправки в браузер. Независимо от выбранной вами синтаксической конструкции модулей, эти import или require утверждения теперь стали __webpack_require__ методами, которые указывают на идентификаторы модулей. Используя данные в манифесте, запуск сможет узнать, где получить модули за этими идентификаторами.
Проблема
Теперь у вас есть немного понимания о том, как работает webpack за кулисами. «Но как это на меня влияет?», — спросите вы. В большинстве случаев это не так. Запуск будет выполнять свою работу, используя манифест, и всё будет работать как будто по волшебству, как только ваше приложение попадет в браузер. Однако, если вы решите улучшить производительность своих проектов, используя кэширование браузера, этот процесс внезапно станет важной вещью для понимания.
Используя хэши содержимого в именах файлов пакета, вы можете указать браузеру, когда изменилось содержимое файла, тем самым аннулируя кэш. Однако, как только вы начнете это делать, вы сразу же заметите какое-то странное поведение. Некоторые хэши изменяются даже тогда, когда их содержимое, по-видимому, не меняется. Это вызвано внедрением запуска и манифеста, которые изменяются при каждом сборке.
См. раздел манифеста в нашем руководстве по управлению выводом, чтобы узнать, как извлечь манифест, и прочитайте руководства ниже, чтобы узнать больше о тонкостях долгосрочного кэширования.
© JS Foundation and other contributors
Licensed under the Creative Commons Attribution License 4.0.
https://webpack.js.org/concepts/manifest