Image Kit
1.6.2
2026-10-05
- Исправлено: с
sourcesили объектом вsrc<VImage>рендерит<picture>, иclass,styleи другие атрибуты, переданные компоненту, попадали на<picture>, а не на<img>, который показывает картинку, — поэтомуborder-radius,object-fitи похожие правила из собственного класса пользователя не давали видимого эффекта, хотя тот же класс на обычном<img>работал. Теперь атрибуты всегда попадают на элемент, который показывает картинку: плейсхолдер, блок ошибки или<img>, в том числе внутри<picture>. Сам<picture>рендерится сdisplay: contents, поэтому в раскладке не участвует, и<img>раскладывается так, будто стоит сам по себе. Обработчики событий, переданные в<VImage>(@clickи др.), тоже привязываются к<img>и работают рядом с собственной обработкойload/errorкомпонента. Если стиль или тест обращался к<picture>через класс или атрибутdata-*, заданный на<VImage>, обращайтесь к<img>или к родительскому элементу. См. Компоновка без обёртки.
1.6.1
2026-10-05
- Исправлено: начиная с 1.6.0
<VImage>на сервере рендерил фрагмент, из-за чегоclass,styleи другие атрибуты, переданные ему, не попадали на<img>, а Vue печатал предупреждениеExtraneous non-props attributes (class) were passed to component but could not be automatically inherited because component renders fragment or text or teleport root nodes. Теперь фрагмент рендерится только там, где он нужен, — для ленивой картинки сssrPlaceholderи готовым превью, — и в этом случае атрибуты передаются на<img>явно. Во всех остальных состояниях на сервере и на клиенте снова один элемент. - Исправлено:
classтеперь добавляется и на изображение внутри<noscript>у отложенной картинки, чтобы без JavaScript она выглядела так же.
1.6.0
2026-10-03
- Автоматические плейсхолдеры для импортируемых изображений.
placeholders: { imports: true }(в Nuxt:vueImageKit: { placeholders: { imports: true } }) считает плейсхолдер при сборке для каждого изображения, которое скрипт или однофайловый компонент импортирует default-импортом, — включая импорты, которые Vue генерирует изsrc="…"в шаблоне, и те, в которые разворачиваетсяimport.meta.glob(…, { eager: true }). Без запроса?placeholderи без правок шаблонов: плейсхолдер регистрируется под самим импортированным значением (dev-URL или хешированный URL сборки), поэтому<VImage :src="hero" />сам находит своё размытие и размер — в dev, в сборке и при серверном рендеринге. Настраивается черезmode,extensionsиexclude. См. Плейсхолдер для каждого импортируемого изображения. - Новый экспорт
registerPlaceholder(src, data).VImage,v-lazy-imgиuseBackgroundImage()ищутsrcв этом реестре после манифестаplaceholders, так что манифест передавать не обязательно. - Битое растровое изображение больше не роняет сборку, когда плейсхолдер считается через переписанные импорты: печатается предупреждение, и плейсхолдера у него нет.
- Новый проп
<VImage>—ssrPlaceholder(включается явно, по умолчаниюfalse). Отрендеренный на сервере<img>получает готовое превью (data:URL изplaceholder,image.placeholderили реестра) как CSS-фон, поэтому у картинки есть blur ещё до запуска JavaScript; без пропса ничего не меняется. Ленивая картинка при этом ещё и удерживается: сервер отдаёт прозрачный пиксель вместо настоящегоsrc, а настоящий<img>кладёт в<noscript>, поэтому тяжёлый файл скачивается только когда картинка приближается к области просмотра, а поисковики и посетители без JavaScript всё равно его получают (нетерпеливая картинка —lazy="false"илиpriority— сохраняетsrc). После гидрации превью продолжает показываться под картинкой, а сервер и клиент рендерят одинаковый результат, поэтому hydration mismatch нет. См. Превью в серверном HTML. - Новая опция
placeholders.imports.preview(trueили список шаблонов путей: директория, точный файл, часть пути или glob вродеsrc/**/hero-*.webp; сравниваются с настоящим путём файла от корня проекта, поэтому импорты через алиасы работают).excludeпринимает те же шаблоны. См. Выбор изображений по пути. Плагин дополнительно рисует готовое превью для импортируемых изображений и регистрирует его, поэтому в шаблоне достаточно<VImage :src="hero" ssr-placeholder />. По умолчанию выключена; на этапе сборки нужен пакетthumbhash. См. Готовое превью для серверного рендеринга. - Записи реестра и
registerPlaceholder()принимают готовое превью (placeholderилиpreview). Реестр живёт вglobalThis, поэтому серверная и клиентская копии пакета используют один и тот же.