Вышла версия Quill 2.0.
Официальное заявление TypeScript
Исходный код Quill был полностью переведен на TypeScript с преимуществами раннего обнаружения ошибок, улучшенной ремонтопригодностью и улучшенной инструментальной поддержкой.
Раньше разработчикам приходилось @types/quill
устанавливать его как отдельный пакет для получения определений TypeScript. В Quill 2.0 объявления типов можно получить непосредственно из исходного кода.
несколько реестров
Проекты блогов могут использовать Quill для предоставления полнофункционального интерфейса редактирования самой публикации, включая заголовки, изображения и блоки кода, в то время как на той же странице Quill также поддерживает ввод комментариев полужирным и курсивом, а также поддерживаемые форматы ссылок. Новые registry
функции Quill 2.0 поддерживают этот вариант использования, позволяя нескольким редакторам со своими собственными конфигурациями стилей сосуществовать на одной странице без каких-либо конфликтов.
Автоматическое обнаружение подвижного контейнера
Раньше разработчикам приходилось указывать контейнер прокрутки редактора при создании экземпляра Quill, чтобы курсор или выделение пользователя могли прокручиваться в поле зрения при необходимости. Но эту конфигурацию часто упускают из виду или путают, а перемещаемый контейнер либо указывается неправильно, либо не указывается вообще. Кроме того, в более крупных приложениях и базах кода не всегда легко найти подходящий контейнер прокрутки для повторно используемых компонентов редактора, которые могут появляться в разных контекстах. В версии 2.0 Quill автоматически находит правильный контейнер прокрутки, что упрощает использование Quill с текстом более длинного формата и поддерживает более сложные взаимодействия, такие как свободно вложенные контейнеры прокрутки и горизонтальную прокрутку.
Использование Входного события
Одной из главных сильных сторон Quill является его модель документов с внутренним управлением, которая не полагается на DOM как на единственный источник достоверной информации. Это обеспечивает отображение состояний форматированного текста, более близкое к ментальной модели разработчика, и поддерживает более простой API редактирования текста.
Quill делает это, отслеживая изменения DOM и нормализуя их обратно в свою внутреннюю модель документа. Однако браузеры могут обрабатывать действия пользователя непоследовательно или неправильно, что приводит к созданию неверных изменений DOM. Например, когда пользователь выбирает красный текст и заменяет его при вводе, браузер иногда заменяет его элементом, атрибуты font
которого содержат красный цвет style
, даже если редактор использует span
этот элемент для представления цвета.
В Quill 2.0 используйте современные и распространенные функции браузера для запуска InputEvents . Теперь действия пользователя сначала фиксируются для обновления внутренней модели документа, а затем полученные изменения синхронизируются с DOM. Этот подход обеспечивает более единообразный и надежный процесс редактирования, особенно для сложного контента и форматов. В настоящее время эта функция ориентирована на наиболее проблемные источники взаимодействий с заменой текста, и в будущем планируется ее более широкое использование.
Ниже приведен список основной информации об обновлении для версии 2.0:
Основные улучшения
-
Quill теперь является действительным пакетом ESM для лучшей поддержки экосистемы (например, упаковщиков) и функций встряхивания деревьев.
-
Поддержка вложенного пера #3590
-
Улучшенный метод ввода (IME) и поддержка корректора орфографии #3807.
-
Семантическая очистка события TEXT_CHANGE № 3778.
-
История: запись выбранных значений в модуль истории № 3823.
-
Автоматически обнаруживать прокручиваемые контейнеры #3840
-
Буфер обмена: улучшена поддержка вставки из Google Docs и Microsoft Word.
Улучшения производительности
-
Quill 2.0 включает в себя ряд оптимизаций производительности, наиболее важной из которых является повышение скорости рендеринга больших объемов контента.
-
Улучшение производительности вставки #3815
-
По возможности избегайте получения наборов выбора #3538
-
Нет необходимости устанавливать Contents, когда контейнер пуст #3539
Модернизация кода
-
Переход на TypeScript
-
Официальная декларация TypeScript предоставлена.
-
Переход на Vitest для модульного тестирования
-
Перейдите на Playwright для комплексного тестирования
-
Перенести сайт в Gatsby
Подробности можно найти в официальном объявлении и руководстве по переходу на версию 2.0: