Гутенберг 2.9 и мой вклад
Это сообщение было впервые опубликовано в моем личном блоге здесь 19 мая 2018 г.
Ууууу! Гутенберг 2.9 вышел сегодня. Я должен сказать, что пока все идет хорошо, и он приобретает форму, которую можно объединить с ядром.
ПРОЕКТ ГУТЕНБЕРГА
Для тех, кто не знаком с тем, о чем я говорю, проект Gutenberg представляет новый опыт публикации в WordPress, с текущим фокусом на редакторе сообщений. На первом этапе текущее открытое окно текстового редактора заменяется интуитивно понятным блочным интерфейсом. Подробнее о проекте можно узнать здесь.
ИЗМЕНЕНИЯ В 2.9
В Gutenberg 2.9 не так много революционных изменений, как в 2.8. Команда объединила около 100 запросов на включение в выпуск, который в основном состоял из исправлений ошибок. Наиболее заметные изменения, на мой взгляд, включают в себя:
Добавление поддержки закрепления для плагинов боковой панели
Это дополнение было самым захватывающим улучшением в версии 2.9.
Он добавляет функцию закрепления ко всем плагинам, расширяющим редактор, что позволяет пользователю закреплять плагин в заголовке основного редактора, в основном для быстрого доступа и простоты использования.
Добавление (дополнительных) сочетаний клавиш
Этот PR добавляет возможность использовать еще пару очень полезных сочетаний клавиш в редакторе Gutenberg. Теперь пользователи могут использовать CMD+S для сохранения, CMD+Z для отмены, CMD+Shift+Z для повтора (для macOS) / CTRL+S для сохранения, CTRL+Z для отмены и CTRL+Y для повтора. Звучит интересно, не так ли?
Исправление ширины подписи на изображениях с измененным размером
Этот PR вводит использование fit-content
и min-content
на рисунках, где min-content
использует минимальную ширину изображения при изменении размера и устанавливает эту ширину для подписи. Вот изящное изображение до/после, описывающее улучшение:
Полировка табличного блока в плане отзывчивости
Этот PR вводит переключатель на боковой панели блока таблицы, чтобы определить, имеет ли таблица фиксированную ширину.
Он также включает другие улучшения стилей, касающиеся блока таблицы.
Определение необходимости отображения пользовательского интерфейса публикации
Это был интересный пример, который вводит использование wp:action-publish
, чтобы определить, должны ли отображаться панель публикации и кнопка публикации. Раньше для определения того, является ли текущий пользователь автором, использовалось только условие isContributor
, которое зависело от компонента user
, и если да, то пользовательский интерфейс публикации ему не показывался. Этот PR вводит hasPublishAction
, который зависит от wp:action-publish
, чтобы явно проверять, открыта ли панель публикации для текущего пользователя.
Повышение производительности за счет прекращения ненужных повторных рендеров
Этот PR вводит использование мемоизации, которая гарантирует, что функции getColor
и setColor
не возвращают новый объект или новую функцию каждый раз, когда они изменяются. Это приводит к устранению ненужных рендеров при использовании упомянутых функций.
Добавление компонента FontSizePicker
Еще один интересный момент, который делает пользовательский интерфейс размера шрифта в блоке абзаца универсальным. Таким образом, другие блоки в сообщении смогут использовать логику пользовательского интерфейса и размера шрифта, используемую в блоке абзаца, и использовать то же самое в себе.
Улучшение поведения фокуса для компонента RichText
Ранее локальное состояние использовалось вручную для сохранения того, какой компонент находится в фокусе, а затем запрещалось выбирать другие компоненты одновременно. Это улучшает поведение фокуса для компонента RichText
, гарантируя, что только один из этих компонентов может быть сфокусирован одновременно.
Это были изменения, на которые, на мой взгляд, стоило обратить внимание. Есть более описательный пост от Matias Ventura здесь, в котором описаны все изменения и дополнения, появившиеся в 2.9.
МОИ ВКЛАДЫ В 2.9
Я планировал внести свой вклад в Гутенберг с тех пор, как впервые услышал об этом проекте. Наконец-то я смог придумать распорядок, чтобы тратить часть своего дня на учебу, практику, эксперименты и дополнения, которые появились в версии 2.9. Хотя очень незначительные обновления, но вот те, которые были объединены в этой версии:
Введение настройки выравнивания текста в блоке подзаголовков
В блоке подзаголовка в редакторе отсутствовала настройка выравнивания текста, которая была доступна в других блоках, таких как заголовок, абзац и так далее.
Я немного изучил структуру других блоков, и мне не составило труда определить, каковы требования для работы этой настройки и какой будет структура, что привело к успешному слиянию после некоторых обзоров и обновлений.
Перенос настроек выравнивания в блоке заголовков с боковой панели на панель инструментов блока
Настройка выравнивания текста для блока заголовка изначально располагалась на боковой панели. Я обнаружил, что команда работала над перемещением настройки выравнивания текста с боковой панели на панель инструментов для блоков. Этот объединенный PR сделал то же самое в случае блока заголовка.
Однако это изменение было отменено в более позднем PR из-за некоторых визуальных проблем на небольших устройствах.
Отображение полей подписи и описания в модальном изображении поста
Поля подписи и описания в модальном окне избранного изображения изначально были скрыты, так как считались ненужными. Проблема, рассмотренная в этом PR, требовала отмены изменений и отображения полей заголовка и описания, поскольку многие пользователи сочли их полезными.
Это была моя первая попытка внести свой вклад в проект с открытым исходным кодом и поэкспериментировать с React. Я проверял React в документации и примерах в прошлом, но однажды получил возможность изучить и поработать над ним. Мне это нравится до сих пор, и я надеюсь, что продолжу свое исследование и участие в проекте Gutenberg.
С учетом сказанного, я завершу это здесь и буду искать в разделе комментариев мысли с вашей стороны. Что вы думаете о версии 2.9? Считаете ли вы, что эти обновления улучшают ваш опыт использования? Как вы думаете, достаточно ли созрел Гутенберг, чтобы его можно было объединить в ядро? Дайте мне знать в разделе комментариев.