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 | undefinedURL или URL данных изображения, которое будет использоваться в качестве заполнителя, пока загружается это изображение.
placeholderConfig
ImagePlaceholderConfig | undefinedОбъект конфигурации параметров заполнителя. Доступные параметры:
- blur: значение false отключает автоматическое размытие CSS.
generatePlaceholder
string | boolean | nullВозвращает URL изображения в формате, подходящем для использования со свойством CSS background-image. Ожидается одно из следующих значений:
- Изображение в кодировке base64, которое оборачивается и передаётся дальше.
- Логическое значение. Если оно равно true, вызывается загрузчик изображений для создания URL небольшого изображения-заполнителя.
string | boolean
string | boolean | null
shouldBlurPlaceholder
booleanОпределяет, следует ли применять размытие, на основе необязательного логического свойства blur в необязательном объекте конфигурации placeholderConfig.
boolean
Описание
Директива, повышающая производительность загрузки изображений за счёт применения лучших практик.
NgOptimizedImage обеспечивает приоритетную загрузку изображения Largest Contentful Paint (LCP), выполняя следующие действия:
- Автоматически задаёт атрибут
fetchpriorityдля тега<img> - По умолчанию загружает изображения с низким приоритетом отложенно
- Автоматически создаёт тег preconnect в head документа
Кроме того, директива:
- Генерирует подходящие URL ресурсов, если предоставлена соответствующая функция
ImageLoader - Автоматически генерирует srcset
- Требует указать
widthиheight - Выдаёт предупреждение, если
widthилиheightзаданы неправильно - Выдаёт предупреждение, если при отображении изображение будет визуально искажено
Примечания по использованию
Чтобы включить и использовать директиву, выполните следующие действия:
- Импортируйте её в компонент.
- При необходимости предоставьте
ImageLoader, если используете службу размещения изображений. - Обновите необходимые теги
<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 предоставляет следующие функции:
Если вы используете другого поставщика изображений, можно создать пользовательскую функцию загрузчика, как описано ниже.
Чтобы использовать пользовательский загрузчик: предоставьте функцию загрузчика в качестве значения 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