5 способов получить максимум от компонента «Изображение» в Next.js
Большинство из них используют компонент <Image/>
из Next JS сам по себе и без каких-либо дополнительных настроек, предполагая, что изображения оптимизированы до максимума сами по себе, что неправильно!
Да, используя компонент <Image/>
, вы получаете некоторый уровень оптимизации изображения, но его можно дополнительно оптимизировать в зависимости от ряда факторов.
В этой статье я покажу вам, как это можно сделать, а также дам ссылку на мой репозиторий GitHub, который я использовал для этого исследования.
1. Использование локальных изображений
При использовании локальных изображений вы можете просто импортировать их из общей папки, а поскольку это локальное изображение, вы можете пропуститьдобавление высоты и ширины, так как Next JS вычислит их. отсутствует во время сборки
2. Использование удаленных изображений
Говоря об удаленных изображениях, мы четко понимаем, что нам понадобится строка URL-адреса изображения, которая входит в src={'image-url'}, но вы также должны понимать, что Next JS не имеет доступа к этому изображению при сборке. время, что означает, что он не будет знать ширину и высоту изображения, и, следовательно, нам нужно указать высоту и ширину нужного нам изображения.
3. Удаленные изображения (с размытием при загрузке)
Большую часть времени вы сможете увидеть пустое место перед загрузкой изображения, и становится еще хуже, когда вам нужно загрузить огромное количество изображений одновременно, и это плохой пользовательский опыт, если мы собираемся это сделать, и это где на сцену выходит свойство blurDataURL и заполнитель.
заполнитель будет установлен на «размытие», чтобы эффект размытия возник до того, как будут получены полные данные изображения, а blurDataURL будет изображением вашего основного изображения в кодировке base64. который должен быть загружен, и обычно этот base64 довольно мал и будет увеличен в качестве заполнителя для размытого эффекта загрузки.
Примечание: для локальных изображений вам нужно будет использовать только свойство placeholder, установив для него значение «размытие», а blurDataURL можно игнорировать. Next JS выполнит магию за кулисами
4. тип макета
Поведение макета изображения при изменении размера области просмотра.
- При значении
intrinsic
размеры изображения уменьшаются для меньших окон просмотра, но сохраняются исходные размеры для больших окон просмотра. - Когда
fixed
, размеры изображения не будут изменяться при изменении области просмотра (нет реакции), аналогично собственному элементуimg
. - Когда
responsive
, размер изображения будет уменьшаться для меньших окон просмотра и увеличиваться для больших окон просмотра. Убедитесь, что родительский элемент используетdisplay: block
в своей таблице стилей. - Когда
fill
, изображение будет растягиваться как по ширине, так и по высоте до размеров родительского элемента, при условии, что родительский элемент является относительным. Обычно это связано со свойствомobjectFit
. Убедитесь, что родительский элемент имеетposition: relative
в своей таблице стилей.
5. Контролируйте качество изображения, которое вам нужно
Качество оптимизированного изображения, целое число от 1
до 100
, где 100
— наилучшее качество. По умолчанию 75
.
Итак, это 5 основных способов, которыми вы могли бы эффективно использовать ‹Image /› от Next JS, и ознакомьтесь с репозиторием кода, который я прикрепил ниже, для справки.