Автор оригинала: FreeCodeCamp Community Member.
Дидье Фарб
Все казалось совершенным, пока ваш приложение не увеличивается слишком быстро …
Вступление
Ты большой поклонник Реагировать И еще больший вентилятор современного стека развития JavaScript. React, Redux, ES6, Babel и WebPack – ваши любимые игрушки, так что у них нет никих секретов для вас? Уверен, что они делают – которые вы увидите после того, как вы прочитали следующее.
Этот пост не стремится быть исчерпывающим, но описывает простой и современный метод для решения проблемы, связанной с тем, как нам нравится код.
Проблема
Вот хороший пример. Как видите, WebPack создал два файла JavaScript: bundle.js и Vendor.js Отказ Это первый шаг расщепления кода, разделяя ваши поставщики из вашего собственного кода. Это хорошо документировано в Новый документация WebPack.
Это предпосылка для следующих шагов. Обмен продавцами, такими как React и Redux со всеми вашими компонентами, необходимо. Но, как видите, наше размер приложения находится недалеко от ~ 2 МБ без его изображений, шрифтов и других активов. Наше приложение займет секунды, чтобы загрузить и даже больше с дерьмовым мобильным подключением. Почему бы нам не разделить его на несколько кусков, которые будут загружаться только, когда нам это нужно? Легче сказать, чем сделать.
Когда начать ?
Существует много способов, когда вы заботитесь о скорости и производительности: один из них – рендеринг боковых серверов, но это не тот теман сегодня?
В этой статье мы исследуем расщепление кода с помощью WebPack, и лучшее место для начала Сам WebPack Repo Отказ Есть и другие решения. Это сказано, мы должны сделать выбор .. и победитель … Импорт ()
(ранее по имени System.import ()
) Отказ Я называю это «современным способом».
System.import был устарел. Medium.com.
1. Будь умным
Там нет волшебного инструмента, и чтобы получить лучший компромисс, вы, вероятно, придется использовать свой мозг? Например, Vendor.js не должен содержать каждой библиотеки, только те, которые являются «глобальными», как реагируют, Redux или момент.
2. Запустите разделение кода (реальный)
Загрузка компонента (или любого модуля ES) Этот способ интерпретирован как точка разделения по WebPack.
Теперь представьте, что у нас есть следующее в корне нашего приложения. Проблема в том, что Главная
составная часть. С его экзотической библиотекой относительно большая по сравнению с остальной частью приложения. Напоминание: на данный момент все упаковано в одно и то же расслоение и загружено одновременно.
Давайте создадим простой компонент обертки, который будет асинхронно загружать и представлять наш домашний компонент. Он будет загружен только тогда, когда вы вошли в систему.
Мы можем сделать это еще проще, стандартизируя этот метод. Я экстернализовал его как крошечный Реагистрационные кодовые расщепления Отказ И окончательный результат виден здесь:
Если вы хотите увидеть этот фрагмент в контексте, посмотрите на Redux-React-Starter Отказ
3. Выход
Как видите, WebPack создал новый файл с именем 0. [Чуншаш] .js. Это наш старый домой брат?
4. Наслаждайтесь преимуществами
Как вы можете видеть, Главная Компонент (0.bf87aaa616Cea4a1ed40.js) был загружен по требованию, сразу после регистрации. Обратите внимание, что производительность будет еще лучше, если вы берете Уход с кэшированием и http/2. Вы можете сделать Отчет маяка Ваш любимый инструмент для создания производительности вашего приложения.
Что дальше ?
Не стесняйтесь исследовать долгосрочные кэширование, офлайн-возможности и так далее. Положить это просто: Как сделать прогрессивное веб-приложение, снова и снова.
Вы не хотите пропустить какие-либо из моих статей ? Следуй за мной в Twitter @Didierfranc.