Я работал в компании, у которой есть собственный JS-модуль. Реализация имеет функцию requireIfLoaded
, которая позволяет вам запрашивать модуль, но только если он уже был загружен. Если модуль еще не загружен, выдается ошибка. Использование requireIfLoaded
не связывает модуль. Это резко сократило наш размер файла.
Вот пример того, как это может быть полезно:
if (page === PROFILE) {
// ProfileHelper should already be downloaded if we're on the profile page.
const ProfileHelper = requireIfLoaded('ProfileHelper');
ProfileHelper.doSomething();
} else if (page === FEED) {
// FeedHelper should already be downloaded if we're on the feed page.
const FeedHelper = requireIfLoaded('FeedHelper');
FeedHelper.doSomething();
}
Для страницы профиля и страницы канала создается отдельный пакет. require('ProfileHelper')
не вызывается в путях кода страницы канала, поэтому ProfileHelper
не входит в пакет каналов. require('FeedHelper')
не вызывается в кодовых путях страницы профиля, поэтому FeedHelper
не входит в комплект профилей. Есть ли в Webpack что-то подобное?
Изменить для уточнения:
Если мне все время требуются и ProfileHelper
, и FeedHelper
, то один из модулей будет неиспользован. Не более одного из них загружается на любой странице. На странице профиля загружен ProfileHelper
, но не FeedHelper
. Наоборот, для страницы канала.
Кроме того, я не хочу использовать require.ensure
, потому что он асинхронный.