javascript42
Главная
Все учебники
Блог
Учебник Unpoly
Введение
Что такое Unpoly и зачем он нужен
История и философия проекта
Сравнение с другими подходами
Требования и совместимость
Установка и подключение
Основы работы с Unpoly
Первое приложение
Структура HTML-атрибутов
Жизненный цикл запроса
Работа с фрагментами страницы
Селекторы и таргетинг
Валидация ответов сервера
Навигация и ссылки
Атрибут up-follow
Атрибут up-target
Множественные цели обновления
Fallback-стратегии
Прелоадинг ссылок
Мгновенная навигация
Обработка ошибок навигации
Формы
Базовая отправка форм
Атрибут up-submit
Валидация на стороне клиента
Обработка серверных ошибок
Автоматическая отправка
Зависимые поля
Работа с файлами
Слои и модальные окна
Концепция слоев
Модальные окна
Боковые панели
Всплывающие окна
Навигация между слоями
Закрытие слоев
Передача данных между слоями
Вложенные слои
Фрагменты и селекторы
Основные селекторы
Именованные фрагменты
Составные селекторы
Псевдоселекторы Unpoly
Приоритеты при выборе фрагментов
Происхождение фрагментов
История и навигация
Заголовок страницы
URL и параметры
Программная навигация
Кнопки назад и вперед
Восстановление прокрутки
Сохранение состояния
Кэширование
Стратегии кэширования
Время жизни кэша
Очистка кэша
Условное кэширование
Кэш и слои
Оптимизация производительности
Переходы и анимации
Встроенные анимации
Пользовательские переходы
Продолжительность и задержка
Анимация появления
Анимация исчезновения
Прерывание анимаций
События
Жизненный цикл событий
Основные события Unpoly
Подписка на события
Отмена операций через события
События слоев
События форм
События навигации
События компиляции
Компиляция и компиляторы
Концепция компиляции
Создание компиляторов
Деструкторы
Макросы
Порядок выполнения
Повторная компиляция
Batch-компиляция
Валидация
Типы валидации
Атрибуты валидации
Серверная валидация
Отображение ошибок
Кастомные правила
Интеграция с библиотеками
Сеть и запросы
HTTP-методы
Заголовки запросов
Параметры запросов
Таймауты
Retry-логика
Отмена запросов
Загрузка индикаторов
Прокрутка
Автоматическая прокрутка
Управление фокусом
Reveal-стратегии
Smooth scroll
Прокрутка к якорям
Сохранение позиции
Расширенная работа с фрагментами
Извлечение фрагментов из строк
Программное обновление
Уничтожение фрагментов
Замена без навигации
Append и prepend
Режимы обновления
JavaScript API
Функция up.follow
Функция up.submit
Функция up.render
Функция up.navigate
Функция up.reload
Функция up.destroy
Функция up.replace
Работа с данными
Атрибут up-data
Передача данных в компиляторы
Сериализация форм
Чтение и запись мета-данных
Данные слоев
Контекст
Что такое контекст
Установка контекста
Чтение контекста
Контекст слоев
Обновление контекста
Использование для состояния
Взаимодействие с сервером
Требования к серверу
X-Up заголовки
Частичные рендеры
Редиректы
Обработка ошибок
Прогрессивное улучшение
Конфигурация
Глобальные настройки
Настройка логирования
Настройка сети
Настройка анимаций
Настройка слоев
Настройка истории
Переопределение поведения
Полифиллы и расширения
Встроенные полифиллы
Расширение функциональности
Создание плагинов
Интеграция с фреймворками
Отладка
Включение режима отладки
Логирование событий
Инспектирование слоев
Анализ запросов
Частые ошибки
Диагностика производительности
Производительность
Оптимизация запросов
Минимизация перерисовок
Ленивая загрузка
Prefetch стратегии
Метрики и мониторинг
Доступность
Фокус и навигация с клавиатуры
ARIA-атрибуты
Объявления для скринридеров
Управление фокусом в слоях
Тестирование
Юнит-тестирование компиляторов
Интеграционное тестирование
E2E тестирование
Моки и стабы
Асинхронность в тестах
Миграция и совместимость
Миграция с предыдущих версий
Breaking changes
Устаревшие функции
Обратная совместимость
Паттерны и практики
Организация кода
Переиспользуемые компоненты
Работа с формами
Условная загрузка
Infinite scroll
Live-поиск
Динамические списки