При написании другого поста я понял, что я не задокументировал/описал мой образ Ленивая загрузка Реализация в Hugo. В любом месте, так вот это приходит. Полный исходный код в Это репо Отказ
Первое, что нам нужно, есть Отзывчивые изображения , не то, что вы получаете при установке ширины до 100% в CSS, но разные версии одного и того же изображения в разных разрешениях, чтобы веб-браузер может выбрать лучший (используя SrCet ).
Изменение структуры папки
Структура, которую я имел до реализации, это все файлы разметки в той же папке с изображениями общего Статические/изображения папка. Использовать Обработка изображений В Уго нам нужно использовать Страница ресурсов , означает, что мы должны создать папку для каждого поста, где мы помещаем как файл markown, и изображения, связанные с этим постом.
Чтобы иметь возможность ссылаться на изображения в файлах Markdown, нам нужно Шорткод Отказ Это самая сложная часть, чтобы объяснить, поскольку код немного длин. Это потому, что у меня есть возможность пройти параметры для того, иметь ли границу, пользовательскую ширину, лайтбокс и подпись. Это также может быть, потому что мои навыки шаблона GO сомнительны.
Я использую шорткод в моем index.md Файл для ссылки на изображение такое:
{{}}
То, что происходит в режиме реализации Shortcode ниже, состоит в том, что я создаю размытую версию изображения, размер которого ширина разместится до 48 пикселей (сохраняя соотношение сторон). Это изображение, которое вы увидите, прежде чем выбрасть лучшая версия. Это небольшое изображение встроен в HTML в качестве кодированной строки Base64, так что не требуется дополнительного запроса, необходимого для получения начального изображения.
Затем генерируются несколько разных версий, но только если исходное изображение больше, чем версия, я пытаюсь сгенерировать. Я не хочу высококашивать изображение (оно будет размыто). Переменная $ src_set Прилагается с каждой версией и будет содержать все версии (размеры), когда начинается часть HTML.
Здесь есть несколько классов CSS, которые действуют как сигнал для разных функций JavaScript. Lightbox это такая вещь, но интересная вот Лазиловая дорога . Я использую библиотеку JavaScript под названием Лазизирует Это включено в мой JavaScript Bundle, и я создал HTML для работы с этой библиотекой.
Возможно, вы заметили, что код выше выглядит несколько дублирован, это потому, что у меня есть носирка Тег для тех, кто с JavaScript отключен. В этом случае тег SRCSet все еще используется для обеспечения лучшего изображения, но без ленивой загрузки.
Здесь нет «размытия эффекта». Это сознательное решение, поскольку это немного проще реализовать и чувствует себя быстрее, на мой взгляд.
Рассмотрение производительности
В Документация Hugo для обработки изображений Это четко заявлено, что рекомендуется включать сгенерированные изображения в контроле источника. Это следует не создавать одни и те же изображения снова и снова. На большом участке с множеством изображений это может иметь большое значение.