Spec-Zone.ru › Angular

NgOptimizedImage

Директива, повышающая производительность загрузки изображений за счёт применения лучших практик.

Руководство по оптимизации изображений

API

class NgOptimizedImage implements OnInit ,OnChanges {
  @Input() ngSrc: string;
  @Input() ngSrcset: string;
  @Input() sizes?: string | undefined;
  @Input() width: number | undefined;
  @Input() height: number | undefined;
  @Input() decoding?: "auto" | "sync" | "async" | undefined;
  @Input() loading?: "auto" | "lazy" | "eager" | undefined;
  @Input() priority: boolean;
  @Input() loaderParams?: { [key: string]: any; } | undefined;
  @Input() disableOptimizedSrcset: boolean;
  @Input() fill: boolean;
  @Input() placeholder?: string | boolean | undefined;
  @Input() placeholderConfig?: ImagePlaceholderConfig | undefined;
  protected generatePlaceholder(placeholderInput: string | boolean): string | boolean | null;
  protected shouldBlurPlaceholder(placeholderConfig?: ImagePlaceholderConfig | undefined): boolean;
}

ngSrc

string

Имя исходного изображения. Имя изображения будет обработано загрузчиком изображений, а итоговый URL будет задан в качестве свойства src изображения.

ngSrcset

string

Список дескрипторов ширины или плотности, разделённых запятыми. Имя изображения будет взято из ngSrc и объединено со списком дескрипторов ширины или плотности для формирования итогового свойства srcset изображения.

Пример:

<img ngSrc="hello.jpg" ngSrcset="100w, 200w" />  =>
<img src="path/hello.jpg" srcset="path/hello.jpg?w=100 100w, path/hello.jpg?w=200 200w" />

sizes

string | undefined

Базовый атрибут sizes, передаваемый элементу <img>. Указание sizes приводит к автоматическому созданию адаптивного srcset для изображения.

width

number | undefined

Для адаптивных изображений: исходная ширина изображения в пикселях. Для изображений фиксированного размера: желаемая ширина изображения при отображении в пикселях.

height

number | undefined

Для адаптивных изображений: исходная высота изображения в пикселях. Для изображений фиксированного размера: желаемая высота изображения при отображении в пикселях.

decoding

"auto" | "sync" | "async" | undefined

Желаемое поведение при декодировании изображения. Если значение не задано явно, по умолчанию используется auto, как и в браузерах.

Используйте async для декодирования изображения в отдельном потоке (неблокирующий режим), sync для немедленного декодирования (блокирующий режим) или auto, чтобы позволить браузеру выбрать оптимальную стратегию.

Спецификация

loading

"auto" | "lazy" | "eager" | undefined

Желаемое поведение при загрузке (lazy, eager или auto). По умолчанию используется lazy, что рекомендуется для большинства изображений.

Предупреждение: если задать для изображений loading="eager" или loading="auto", они будут считаться изображениями с низким приоритетом, что может снизить производительность загрузки. Для изображений, которые могут стать элементом LCP, используйте атрибут priority вместо loading.

priority

boolean

Указывает, должно ли это изображение иметь высокий приоритет.

loaderParams

{ [key: string]: any; } | undefined

Данные, передаваемые пользовательским загрузчикам.

disableOptimizedSrcset

boolean

Отключает автоматическую генерацию srcset для этого изображения.

fill

boolean

Переводит изображение в режим «заполнения», в котором не требуется задавать высоту и ширину и добавляются стили, позволяющие изображению заполнить содержащий его элемент.

placeholder

string | boolean | undefined

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

placeholderConfig

ImagePlaceholderConfig | undefined

Объект конфигурации параметров заполнителя. Доступные параметры:

  • blur: значение false отключает автоматическое размытие CSS.

generatePlaceholder

string | boolean | null

Возвращает URL изображения в формате, подходящем для использования со свойством CSS background-image. Ожидается одно из следующих значений:

  • Изображение в кодировке base64, которое оборачивается и передаётся дальше.
  • Логическое значение. Если оно равно true, вызывается загрузчик изображений для создания URL небольшого изображения-заполнителя.
@paramplaceholderInputstring | boolean
@returnsstring | boolean | null

shouldBlurPlaceholder

boolean

Определяет, следует ли применять размытие, на основе необязательного логического свойства blur в необязательном объекте конфигурации placeholderConfig.

@paramplaceholderConfigImagePlaceholderConfig | undefined
@returnsboolean

Описание

Директива, повышающая производительность загрузки изображений за счёт применения лучших практик.

NgOptimizedImage обеспечивает приоритетную загрузку изображения Largest Contentful Paint (LCP), выполняя следующие действия:

  • Автоматически задаёт атрибут fetchpriority для тега <img>
  • По умолчанию загружает изображения с низким приоритетом отложенно
  • Автоматически создаёт тег preconnect в head документа

Кроме того, директива:

  • Генерирует подходящие URL ресурсов, если предоставлена соответствующая функция ImageLoader
  • Автоматически генерирует srcset
  • Требует указать width и height
  • Выдаёт предупреждение, если width или height заданы неправильно
  • Выдаёт предупреждение, если при отображении изображение будет визуально искажено

Примечания по использованию

Чтобы включить и использовать директиву, выполните следующие действия:

  1. Импортируйте её в компонент.
  2. При необходимости предоставьте ImageLoader, если используете службу размещения изображений.
  3. Обновите необходимые теги <img> в шаблонах и замените атрибуты src на ngSrc. Использование ngSrc позволяет директиве управлять моментом установки src, что запускает загрузку изображения.

Шаг 1: импортируйте директиву NgOptimizedImage.

@Component({
  imports: [NgOptimizedImage],
})
class MyPage {}

Шаг 2: настройте загрузчик.

Чтобы использовать загрузчик по умолчанию: дополнительные изменения кода не требуются. URL, возвращаемый универсальным загрузчиком, всегда будет совпадать со значением "src". Иными словами, этот загрузчик не преобразует URL ресурса, а значение атрибута ngSrc используется без изменений.

Чтобы использовать имеющийся загрузчик для сторонней службы изображений: добавьте фабрику провайдера выбранной службы в массив providers. В примере ниже используется загрузчик Imgix:

import {provideImgixLoader} from '@angular/common';

// Call the function and add the result to the `providers` array:
providers: [
  provideImgixLoader("https://my.base.url/"),
],

Директива NgOptimizedImage предоставляет следующие функции:

  • provideCloudflareLoader
  • provideCloudinaryLoader
  • provideImageKitLoader
  • provideImgixLoader

Если вы используете другого поставщика изображений, можно создать пользовательскую функцию загрузчика, как описано ниже.

Чтобы использовать пользовательский загрузчик: предоставьте функцию загрузчика в качестве значения DI-токена IMAGE_LOADER.

import {IMAGE_LOADER, ImageLoaderConfig} from '@angular/common';

// Configure the loader using the `IMAGE_LOADER` token.
providers: [
  {
     provide: IMAGE_LOADER,
     useValue: (config: ImageLoaderConfig) => {
       return `https://example.com/${config.src}-${config.width}.jpg`;
     }
  },
],

Шаг 3: обновите теги <img> в шаблонах, чтобы использовать ngSrc вместо src.

<img ngSrc="logo.png" width="200" height="100">

Super-powered by Google ©2010–2025.
Code licensed under an MIT-style License. Documentation licensed under CC BY 4.0.
https://angular.dev/api/common/NgOptimizedImage

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API