3
Компонент Next.js и оптимизация изображений | Паблико
6 подписчики

Компонент Next.js и оптимизация изображений


27 июл 2022 · 02:46    

Привет всем! Сегодня мы рассмотрим Next.js. Это гибкий фреймворк React, который предоставляет вам конструкторские блоки для создания быстрых веб-приложений. У него есть куча интересных функций прямо из коробки. Вместо того, чтобы говорить обо всем этом, мы сосредоточимся на одной функции, которую мы находим очень интересной и которая значительно ускоряет работу вашего веб-приложения.

Для тех, кто хочет узнать больше, Next.js обладает обширной документацией. Вам обязательно следует проверить её для получения более подробной информации.



1_A6Y2KC1t2Pyr09AsM-dtdw.jpeg 56.42 KB


Нашей темой в Next.js будет компонент image и то, как мы должны внедрять изображения в наши веб-сайты и веб-приложения.

В Next.js компонент image является расширением элемента HTML <img>

Однако, прежде чем говорить о компоненте image, мы должны сначала поговорить о самих изображениях.

Что такое изображения

Изображения являются одним из самых важных элементов веб-сайта. Мы добавляем их для того, чтобы:

  • дать пользователю лучший пользовательский опыт;
  • визуально привлеките внимание;
  • помочь пользователю лучше понять контент;
  • направить взгляд вашего посетителя;

Поэтому неправильное их использование может привести к резкому замедлению работы нашего веб-сайта. А в мире, где все происходит быстро, люди, вероятно, не стали бы ждать загрузки наших веб-сайтов в течение 10 секунд.

Оптимизация изображений

  • Используйте изображения правильного размера в соответствии с шириной устройства. Для рабочего стола вы можете использовать изображение 1920х1280. Но использование изображения того же размера для мобильного устройства с шириной устройства 375px приведет к ненужному замедлению работы вашего сайта.
  • Используйте правильный формат для ваших изображений. Предлагается использовать формат webp, поскольку его качество такое же, как при использовании формата jpg или png, но он менее тяжелый.

WebP - это современный формат изображений, который обеспечивает превосходное сжатие изображений в Интернете без потерь и с потерями. Он поддерживается большинством браузеров. Проверьте здесь.

  • Если вы используете много картинок на своем сайте, возможно, вам захочется добавить атрибут loading=«lazy»  к вашему элементу <img />. Таким образом, браузер не будет отправлять никаких запросов на загрузку дополнительных ресурсов до тех пор, пока пользователи не попадут в поле зрения. Это повысит производительность и ускорит загрузку сайта, поскольку изображения запрашиваются тогда, когда они необходимы.

Всегда делайте это перед началом работы, чтобы избежать возможных ошибок.

  • Используйте явные атрибуты ширины и высоты для предотвращения кумулятивного сдвига макета (CLS).

Теперь представьте, что вам не нужно проходить через все эти шаги, чтобы убедиться, что ваше изображение хорошо оптимизировано. Именно здесь на помощь приходит компонент Next.js <Image />.

Next.js и компонент Image

В Next.js, вместо традиционного элемента img, использование встроенного компонента image дает вам столько возможностей прямо из коробки, включая те, о которых мы еще не говорили. Но наше внимание будет сосредоточено на тех, которые мы уже проверили выше.

Оптимизация размера изображения



imgpreview (1).png 86.16 KB


Когда изображение используется в компоненте Image, его размер автоматически оптимизируется в соответствии с шириной устройства. Это означает, что размер изображения 1920x1280 будет уменьшен, если пользователь зайдет на ваш сайт с мобильного устройства.

Next.js использует API для оптимизации изображений. При изменении размера экрана размер изображения также изменяется в соответствии с определенными точками останова. Если вы не указали точки останова явно, значения по умолчанию будут такими:

module.exports = {

images: {

deviceSizes: [640, 750, 828, 1080, 1200, 1920, 2048, 3840],

},

}

Оптимизация формата изображения

Мы уже говорили о том, что рекомендуется использовать формат Webp для изображений, когда мы используем их на наших сайтах. На самом деле, вы также можете проверить Google Lighthouse из инспектора. Если формат изображения jpg или png, Lighthouse предложит вам использовать формат Webp для лучшей производительности.

Next.js справляется и с этим! Он меняет формат изображения на Webp, даже если это jpg или png и т.д. Вот код:

<div className={styles.imgWrapper}> <Image src=«/pic.jpg» layout=«fill» objectFit=«cover» /> </div>

Вот вывод в браузере:



imgpreview (2).png 56.83 KB


Вот сравнение использования jpg и Webp с одним и тем же изображением:



imgpreview (3).png 49.24 KB


Ленивая загрузка

Помните, мы говорили о том, как важно использовать атрибут loading=«lazy»  для повышения производительности сайта? Это также автоматически выполняется компонентом Next.js Image. Изображения не будут отображаться до тех пор, пока они не попадут в начальную область просмотра.

Кумулятивный сдвиг макета (CLS)

Чтобы предотвратить CLS, изображения должны иметь явную ширину и высоту. Откройте Lighthouse и попробуйте сами. Он выдаст вам следующее предупреждение:



imgpreview (4).png 12.35 KB


Для локальных изображений, используемых в компоненте Image, Next.js автоматически предоставляет эти значения. Это устраняет проблему. Однако для изображений, которые мы используем на наших сайтах, необходимо предоставить явные значения ширины и высоты. Поскольку Next.js не имеет доступа к удаленным файлам в процессе сборки. И на самом деле, он выдает это предупреждение:



imgpreview (5).png 72.9 KB



Заключение

Next.js пользуется большой популярностью не просто так. Существует множество других преимуществ создания веб-приложений с помощью этого фреймворка. Если вы являетесь разработчиком react и хотите узнать больше, мы рекомендуем вам ознакомиться с их документацией. Она очень информативна и проста в изучении.

Понравилась статья? Тогда ставьте лайки, пишите комментарии, делитесь ею с друзьями, а также подписывайтесь на нас тут и на других площадках (ссылка в шапке профиля).

Привет всем! Сегодня мы рассмотрим Next.js. Это гибкий фреймворк React, который предоставляет вам конструкторские блоки для создания быстрых веб-приложений. У него есть куча интересных функций прямо из коробки. Вместо того, чтобы говорить обо всем этом, мы сосредоточимся на одной функции, которую мы находим очень интересной и которая значительно ускоряет работу вашего веб-приложения.

Для тех, кто хочет узнать больше, Next.js обладает обширной документацией. Вам обязательно следует проверить её для получения более подробной информации.



1_A6Y2KC1t2Pyr09AsM-dtdw.jpeg 56.42 KB


Нашей темой в Next.js будет компонент image и то, как мы должны внедрять изображения в наши веб-сайты и веб-приложения.

В Next.js компонент image является расширением элемента HTML <img>

Однако, прежде чем говорить о компоненте image, мы должны сначала поговорить о самих изображениях.

Что такое изображения

Изображения являются одним из самых важных элементов веб-сайта. Мы добавляем их для того, чтобы:

  • дать пользователю лучший пользовательский опыт;
  • визуально привлеките внимание;
  • помочь пользователю лучше понять контент;
  • направить взгляд вашего посетителя;

Поэтому неправильное их использование может привести к резкому замедлению работы нашего веб-сайта. А в мире, где все происходит быстро, люди, вероятно, не стали бы ждать загрузки наших веб-сайтов в течение 10 секунд.

Оптимизация изображений

  • Используйте изображения правильного размера в соответствии с шириной устройства. Для рабочего стола вы можете использовать изображение 1920х1280. Но использование изображения того же размера для мобильного устройства с шириной устройства 375px приведет к ненужному замедлению работы вашего сайта.
  • Используйте правильный формат для ваших изображений. Предлагается использовать формат webp, поскольку его качество такое же, как при использовании формата jpg или png, но он менее тяжелый.

WebP - это современный формат изображений, который обеспечивает превосходное сжатие изображений в Интернете без потерь и с потерями. Он поддерживается большинством браузеров. Проверьте здесь.

  • Если вы используете много картинок на своем сайте, возможно, вам захочется добавить атрибут loading=«lazy»  к вашему элементу <img />. Таким образом, браузер не будет отправлять никаких запросов на загрузку дополнительных ресурсов до тех пор, пока пользователи не попадут в поле зрения. Это повысит производительность и ускорит загрузку сайта, поскольку изображения запрашиваются тогда, когда они необходимы.

Всегда делайте это перед началом работы, чтобы избежать возможных ошибок.

  • Используйте явные атрибуты ширины и высоты для предотвращения кумулятивного сдвига макета (CLS).

Теперь представьте, что вам не нужно проходить через все эти шаги, чтобы убедиться, что ваше изображение хорошо оптимизировано. Именно здесь на помощь приходит компонент Next.js <Image />.

Next.js и компонент Image

В Next.js, вместо традиционного элемента img, использование встроенного компонента image дает вам столько возможностей прямо из коробки, включая те, о которых мы еще не говорили. Но наше внимание будет сосредоточено на тех, которые мы уже проверили выше.

Оптимизация размера изображения



imgpreview (1).png 86.16 KB


Когда изображение используется в компоненте Image, его размер автоматически оптимизируется в соответствии с шириной устройства. Это означает, что размер изображения 1920x1280 будет уменьшен, если пользователь зайдет на ваш сайт с мобильного устройства.

Next.js использует API для оптимизации изображений. При изменении размера экрана размер изображения также изменяется в соответствии с определенными точками останова. Если вы не указали точки останова явно, значения по умолчанию будут такими:

module.exports = {

images: {

deviceSizes: [640, 750, 828, 1080, 1200, 1920, 2048, 3840],

},

}

Оптимизация формата изображения

Мы уже говорили о том, что рекомендуется использовать формат Webp для изображений, когда мы используем их на наших сайтах. На самом деле, вы также можете проверить Google Lighthouse из инспектора. Если формат изображения jpg или png, Lighthouse предложит вам использовать формат Webp для лучшей производительности.

Next.js справляется и с этим! Он меняет формат изображения на Webp, даже если это jpg или png и т.д. Вот код:

<div className={styles.imgWrapper}> <Image src=«/pic.jpg» layout=«fill» objectFit=«cover» /> </div>

Вот вывод в браузере:



imgpreview (2).png 56.83 KB


Вот сравнение использования jpg и Webp с одним и тем же изображением:



imgpreview (3).png 49.24 KB


Ленивая загрузка

Помните, мы говорили о том, как важно использовать атрибут loading=«lazy»  для повышения производительности сайта? Это также автоматически выполняется компонентом Next.js Image. Изображения не будут отображаться до тех пор, пока они не попадут в начальную область просмотра.

Кумулятивный сдвиг макета (CLS)

Чтобы предотвратить CLS, изображения должны иметь явную ширину и высоту. Откройте Lighthouse и попробуйте сами. Он выдаст вам следующее предупреждение:



imgpreview (4).png 12.35 KB


Для локальных изображений, используемых в компоненте Image, Next.js автоматически предоставляет эти значения. Это устраняет проблему. Однако для изображений, которые мы используем на наших сайтах, необходимо предоставить явные значения ширины и высоты. Поскольку Next.js не имеет доступа к удаленным файлам в процессе сборки. И на самом деле, он выдает это предупреждение:



imgpreview (5).png 72.9 KB



Заключение

Next.js пользуется большой популярностью не просто так. Существует множество других преимуществ создания веб-приложений с помощью этого фреймворка. Если вы являетесь разработчиком react и хотите узнать больше, мы рекомендуем вам ознакомиться с их документацией. Она очень информативна и проста в изучении.

Понравилась статья? Тогда ставьте лайки, пишите комментарии, делитесь ею с друзьями, а также подписывайтесь на нас тут и на других площадках (ссылка в шапке профиля).

Читайте также

Комментарии 0

Войдите для комментирования
НОВОСТИ ПОИСК РЕКОМЕНД. НОВОЕ ЛУЧШЕЕ ПОДПИСКИ