Pull to refresh

Comments 5

Хорошая статья для понимания того как работает процесс бандлинга. Однако, оверхед в 1,5мб довольно высок, и многие фреймворки имеют автоматическое создание чанков по страницам, компонентам, где оверхед чанка уже незаметен.

В статье я небольшой пример рассматриваю, а в рабочем проекте мы используем платные иконки, а их очень много. Только на скачивание иконок уходило 1.5 mb. Так что это был единственный выход. Или нужно было рефакторить все иконки на проекте

Возражу, в таком смысле можно было бы сконфигурировать webpack на генерацию статических svg, со свойствами fill="currentColor" и т.д., и не иметь оверхеда.

Автоматический бандлинг имеет смысл, так как на среднем проекте очень часто используется максимум 5-10-20 общих иконок (стрелочки, человечки, т.д.), если у вас на проекте сотни разных иконок, то скорее всего, довольно весомая часть из них встречается в одном React-компоненте, который и стоит отправлять в отдельный чанк, возможно, с целом куском UI-я, который окружает эту иконку.

Конечно, при бесконечном большом проекте, конечно, бесконечное число иконок будет иметь смысл превратить в бесконечное число мини-чанков, однако в таком крайнем случае просто svg-иконки как svg-файлы будут самым верным решением.

В таком случае нужно будет:

  1. переделать получение иконок через прямые импорты (пока обратная совместимость);

  2. выделять время на разбиение частей проекта на чанки;

  3. описать состояния для этапов их загрузки.

Тоже вариант, но труднозатратнее.

Думаю, при грамотном подходе получится один раз пройтись глобальным поиском и заменой с регэкспом по всему проекту и всё. Трудозатраты примерно в пределах часа. А выхлоп прям большой. Лично я перешел на прямой импорт svg и https://www.npmjs.com/package/svg-sprite-loader - и очень доволен. При этом можно загружать иконки из разных библиотек и из своих ассетов вперемешку - что прям полезно бывает.

Sign up to leave a comment.

Articles