В зависимости от настроек вы можете сделать вашу библиотеку внешней и лениво загрузить в целевое приложение.В двух словах это означает, что ваша библиотека существует вместе с приложением, но фактически не загружается при инициализации.Затем он может быть загружен событием или после некоторого setTimeout
.
Webpack следит за специальными комментариями, чтобы сообщить ему, какой код должен быть разделен на его собственный пакет:
button.onclick = event => {
const loadLodash = await import(/* webpackChunkName: "lodash" */ "lodash");
console.log('lodash loaded');
};
Thisвид комментария, /* webpackChunkName: "lodash" */
, является одним из таких типов.Обратите внимание, что до тех пор, пока не произойдет какое-либо событие или тайм-аут, ваша библиотека не будет загружена.
Если честно, я не делал этого, в частности, для библиотек, поэтому я не уверен в трудностях, которые могут возникнуть здесь.
Обновление
На самом деле, может быть более простой ответ на этот вопрос.Я забыл, что ленивая загрузка - это просто динамическое создание тега сценария с src для библиотеки, которую вы хотите загрузить (например, с помощью связанной библиотеки lodash).
var script = document.createElement('script');
script.src = 'http://localhost:8080/vendors.[hash].js';
document.head.appendChild(script);
Если вам нужно контролировать, когда ваша библиотеказагружен, вы можете просто запустить его таким образом после того, как какой-то другой код (то, что просто существует для загрузки библиотеки) обнаружит загрузку страницы.
Обновление 2
После перечитыванияэто также может быть так же просто, как запуск имитируемого поведения fbasyncinit
после некоторого события, когда вы знаете, что библиотека загружена в приложение (при условии, что ваша библиотека не зависит от каких-либо сетевых вызовов для инициализации).Все остальные идеи также применимы, но могут быть более сложными, чем вам нужно.Перед тем, как попробовать внешние / ленивые решения, я бы посоветовал взглянуть на что-то простое в своей библиотеке:
window.addEventListener('load', event => {
// your custom fbasyncinit behavior here
});
Это, конечно, после загрузки всего на странице, что может быть слишком позднов зависимости от ваших потребностей.