javascript42
Главная
Все учебники
Блог
Учебник Marked
Введение
Что такое Marked
История и развитие библиотеки
Преимущества использования Marked
Установка и подключение
Первый пример работы
Основы работы с Marked
Базовый синтаксис вызова
Простое преобразование Markdown в HTML
Работа с синхронным API
Работа с асинхронным API
Обработка ошибок парсинга
Конфигурация и опции
Объект опций marked.setOptions
Параметр breaks
Параметр gfm
Параметр headerIds
Параметр headerPrefix
Параметр mangle
Параметр pedantic
Параметр sanitize и безопасность
Параметр silent
Параметр smartypants
Параметр xhtml
Токенизация
Процесс токенизации в Marked
Метод marked.lexer
Структура токенов
Типы токенов
Работа с массивом токенов
Модификация токенов перед рендерингом
Парсинг
Метод marked.parser
Преобразование токенов в HTML
Связь токенизации и парсинга
Управление процессом парсинга
Рендереры
Концепция рендереров в Marked
Создание пользовательского рендерера
Переопределение методов рендерера
Рендеринг заголовков
Рендеринг параграфов
Рендеринг списков
Рендеринг ссылок
Рендеринг изображений
Рендеринг блоков кода
Рендеринг инлайн-кода
Рендеринг цитат
Рендеринг таблиц
Рендеринг горизонтальных линий
Рендеринг жирного текста
Рендеринг курсива
Рендеринг зачеркнутого текста
Комбинирование рендереров
Токенайзеры
Пользовательские токенайзеры
Расширение стандартной токенизации
Создание блочного токенайзера
Создание инлайн-токенайзера
Приоритет токенайзеров
Интеграция токенайзеров с рендерерами
Расширения
Система расширений Marked
Структура объекта расширения
Создание простого расширения
Расширения уровня блоков
Расширения инлайн-уровня
Регистрация расширений
Множественные расширения
Конфликты расширений
Hooks
Система хуков в Marked
Метод marked.use с хуками
Хук preprocess
Хук postprocess
Применение хуков для валидации
Применение хуков для трансформации
GitHub Flavored Markdown
Особенности GFM
Включение режима GFM
Таблицы в GFM
Зачеркивание текста
Автоматические ссылки
Списки задач
Emoji
Отличия от классического Markdown
Работа с кодом
Подсветка синтаксиса
Интеграция с highlight.js
Интеграция с Prism
Пользовательская подсветка
Метаданные блоков кода
Нумерация строк
Копирование кода
Безопасность
Проблемы XSS-атак
Санитизация HTML
Интеграция с DOMPurify
Интеграция с sanitize-html
Whitelist-подход
Экранирование пользовательского контента
Безопасная работа с атрибутами
Политики безопасности контента
Производительность
Оптимизация парсинга больших документов
Ленивая загрузка
Кэширование результатов
Измерение производительности
Сравнение с другими парсерами
Асинхронная обработка
Работа с потоками данных
Интеграция с фреймворками
Использование в React
Использование в Vue
Использование в Angular
Использование в Svelte
Серверный рендеринг
Статическая генерация
Работа на сервере
Использование в Node.js
Обработка файлов
Потоковая обработка
Интеграция с Express
Генерация документации
Markdown-редакторы
Создание простого редактора
Режим предпросмотра в реальном времени
Синхронная прокрутка
Панель инструментов
Горячие клавиши
Сохранение состояния
Автосохранение
Миграция и совместимость
Миграция с CommonMark
Миграция с markdown-it
Миграция с Showdown
Различия в парсинге
Обратная совместимость
Тестирование
Юнит-тестирование рендереров
Тестирование расширений
Тестирование токенайзеров
Снапшот-тестирование
Тестирование производительности
Отладка
Инспектирование токенов
Логирование процесса парсинга
Диагностика проблем рендеринга
Отладка расширений
Профилирование
Типичные ошибки
Расширенные техники
Комбинирование токенайзеров и рендереров
Создание плагинов
Nested parsing
Условный рендеринг
Трансформация дерева токенов
Мультипроходный парсинг