Published on

πŸ–ΌοΈ Π Π°Π±ΠΎΡ‚Π° с изобраТСниями Π² Next.js

Authors

πŸ” Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅

Tailwind Starter Blog ΠΈΠΌΠ΅Π΅Ρ‚ Π²ΡΡ‚Ρ€ΠΎΠ΅Π½Π½ΡƒΡŽ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ встроСнного ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ Next.js ΠΈ автоматичСски замСняСт стандартныС Ρ‚Π΅Π³ΠΈ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ Π² markdown ΠΈΠ»ΠΈ MDX-Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ… Π½Π° прСдоставляСмый ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ Image.

πŸ› οΈ ИспользованиС

Для использования Π² Π½ΠΎΠ²ΠΎΠΌ ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚Π΅ страницы ΠΈΠ»ΠΈ JavaScript-Ρ„Π°ΠΉΠ»Π΅ просто ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠΉΡ‚Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ изобраТСния ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Π΅Π³ΠΎ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

import Image from 'next/image'

function Home() {
  return (
    <>
      <h1>Моя главная страница</h1>
      <Image src="/me.png" alt="Ѐотография Π°Π²Ρ‚ΠΎΡ€Π°" width={500} height={500} />
      <p>Π”ΠΎΠ±Ρ€ΠΎ ΠΏΠΎΠΆΠ°Π»ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° мою страницу!</p>
    </>
  )
}

export default Home

Для markdown-Ρ„Π°ΠΉΠ»Π° ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ стандартный Ρ‚Π΅Π³ изобраТСния, ΠΈ Ρ‚Π΅Π³ img Π±ΡƒΠ΄Π΅Ρ‚ автоматичСски Π·Π°ΠΌΠ΅Π½Ρ‘Π½ Π½Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ Image Π²ΠΎ врСмя сборки.

ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρƒ нас Π΅ΡΡ‚ΡŒ Ρ„Π°ΠΉΠ» ocean.jpg Π² static/images/ocean.jpg, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ строка ΠΊΠΎΠ΄Π° сгСнСрируСт ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅:

![ΠΎΠΊΠ΅Π°Π½](/static/images/ocean.jpg)

ΠΠ»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½ΠΎ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ MDX, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ Image! ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Π² этом случаС Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ фиксированныС ΡˆΠΈΡ€ΠΈΠ½Ρƒ ΠΈ высоту. ΠŸΡ€ΠΈ использовании Ρ‚Π΅Π³Π° img Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ΡΡ автоматичСски.

<Image alt="ΠΎΠΊΠ΅Π°Π½" src="/static/images/ocean.jpg" width={256} height={128} />

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: Если Π²Ρ‹ ΠΏΠΎΠΏΡ‹Ρ‚Π°Π΅Ρ‚Π΅ΡΡŒ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, ΠΎΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ WebP (Ссли ваш Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ Π΅Π³ΠΎ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚)!

ΠΎΠΊΠ΅Π°Π½

Π€ΠΎΡ‚ΠΎ YUCAR FotoGrafik Π½Π° Unsplash

βœ… ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²Π°

  • МСньший Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ с WebP (ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Π½Π° 30% мСньшС, Ρ‡Π΅ΠΌ JPEG)
  • АдаптивныС изобраТСния - загруТаСтся подходящий Ρ€Π°Π·ΠΌΠ΅Ρ€ Π² зависимости ΠΎΡ‚ области просмотра ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ
  • ЛСнивая Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° - изобраТСния Π·Π°Π³Ρ€ΡƒΠΆΠ°ΡŽΡ‚ΡΡ ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ ΠΏΡ€ΠΎΠΊΡ€ΡƒΡ‚ΠΊΠΈ ΠΊ Π½ΠΈΠΌ
  • Π˜Π·Π±Π΅Π³Π°Π΅Ρ‚ кумулятивного сдвига ΠΌΠ°ΠΊΠ΅Ρ‚Π° (CLS)
  • ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ ΠΏΠΎ запросу вмСсто ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΈ сборкС - Π±Π΅Π· увСличСния Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ сборки!

⚠️ ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΡ

  • Из-Π·Π° зависимости ΠΎΡ‚ next/image, Ссли Π²Ρ‹ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ внСшний CDN для ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ, Ρ‚Π°ΠΊΠΎΠΉ ΠΊΠ°ΠΊ Cloudinary ΠΈΠ»ΠΈ Imgix, практичСски Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Vercel для хостинга. Π­Ρ‚ΠΎ связано с Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ дСйствуСт ΠΊΠ°ΠΊ serverless-функция, которая обращаСтся ΠΊ высокооптимизированному CDN для ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ.

    Если Π²Ρ‹ Π½Π΅ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π±Ρ‹Ρ‚ΡŒ привязанным ΠΊ Vercel, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ imgToJsx Π² remarkPlugins Π² Ρ„Π°ΠΉΠ»Π΅ lib/mdx.js. Π­Ρ‚ΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ Π·Π°ΠΌΠ΅Π½Ρ‹ стандартного Ρ‚Π΅Π³Π° img.

    ΠΠ»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠΆΠ΄Π°Ρ‚ΡŒΡΡ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ Π²ΠΎ врСмя сборки. Другая Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°, next-optimized-images, прСдоставляСт Ρ‚Π°ΠΊΡƒΡŽ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ, хотя ΠΎΠ½Π° Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ прСобразования ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ Ρ‡Π΅Ρ€Π΅Π· webpack, Ρ‡Ρ‚ΠΎ Π½Π΅ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ΠΎ Π² Π΄Π°Π½Π½ΠΎΠΌ шаблонС.

  • Π˜Π·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΡ с Π²Π½Π΅ΡˆΠ½ΠΈΡ… ссылок Π½Π΅ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ Ρ‡Π΅Ρ€Π΅Π· next/image

  • ВсС изобраТСния Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π² ΠΏΠ°ΠΏΠΊΠ΅ public, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€: /static/images/ocean.jpeg