Опубликовано

“Изучаем Vue: основные концепции и практические паттерны для современных и масштабируемых пользовательских интерфейсов”

Изучаем Vue

Книга посвящена созданию с нуля пользовательских интерфейсов и фронтенд-приложений с помощью Vue.js — современной платформы JavaScript. На практических примерах разработчики поэтапно познакомятся с инструментами и библиотеками экосистемы Vue.js и научатся создавать полноценные веб-приложения. Рассматриваются ключевые аспекты работы с Vue.js: создание компонентов, добавление реактивности, управление состоянием с помощью Pinia, настройка системы маршрутизации с использованием Vue Router, а также создание базовых анимационных эффектов. Подробно описана настройка фронтенда с помощью инструмента сборки для управления кодом Vite.js, создание повторно используемых компонентов, передача приложению данных с внешнего сервера, тестирование с использованием Vitest и Playwright. Показано, как управлять потоком приложения, реализовывать статическую и динамическую маршрутизацию, а также интегрировать Vue.js в существующие проекты.

Изучите основные концепции Vue.js — современной платформы JavaScript для создания фронтенд-приложений и интерфейсов с нуля. С помощью кратких, практических и понятных примеров эта книга шаг за шагом познакомит веб-разработчиков с инструментами и библиотеками в экосистеме Vue.js и покажет, как создавать полноценные приложения для реальных веб-проектов.

Вы узнаете, как управлять передачей данных между компонентами с помощью архитектуры Pinia, как разработать систему маршрутизации фронтенд-проекта для управления потоком приложения и создать базовые эффекты анимации.

В книге показано, как:

  • создавать повторно используемые системы компонентов с помощью Vue.js;
  • добавлять реактивность в существующее статическое приложение;
  • настраивать фронтенд с помощью Vite.js — инструмента сборки для управления кодом проекта;
  • создавать интерактивную систему управления состоянием фронтенда с помощью Pinia;
  • подключать к приложению Vue данные с внешнего сервера;
  • управлять потоком приложения с помощью статической и динамической маршрутизации посредством Vue Router;
  • тестировать приложение с помощью Vitest и Playwright.

Книгу “Изучаем Vue: основные концепции и практические паттерны для современных и масштабируемых пользовательских интерфейсов“.

Предисловие…………………………………………………………………………………………… 11

Условные обозначения……………………………………………………………………………………………………………… 11

Использование примеров кода…………………………………………………………………………………………………. 12

Благодарности…………………………………………………………………………………………………………………………… 13

Глава 1. Добро пожаловать в мир Vue.js!……………………………………………….. 15

Что такое Vue.js?………………………………………………………………………………………………………………………… 15

Преимущества Vue в современной веб-разработке………………………………………………………………… 16

Установка Node.js………………………………………………………………………………………………………………………. 16

NPM………………………………………………………………………………………………………………………………….. 17

Yarn………………………………………………………………………………………………………………………………….. 19

Инструменты разработчика Vue………………………………………………………………………………………………. 20

Инструмент управления сборкой Vite.js………………………………………………………………………………….. 21

Создание нового приложения Vue……………………………………………………………………………………………. 22

Файловая структура проекта……………………………………………………………………………………………………. 23

Резюме…………………………………………………………………………………………………………………………………………. 24

Глава 2. Как работает Vue: основы………………………………………………………… 25

Виртуальный DOM “под капотом”…………………………………………………………………………………………… 25

Проблема обновления компоновки……………………………………………………………………………….. 26

Что такое виртуальный DOM?………………………………………………………………………………………. 27

Как виртуальный DOM работает вместе с Vue……………………………………………………………. 27

Экземпляр приложения Vue и Options API………………………………………………………………………………. 29

Изучаем Options API………………………………………………………………………………………………………………….. 30

Синтаксис шаблонов…………………………………………………………………………………………………………………. 32

Создание локального состояния в свойстве data()…………………………………………………………………. 33

Как работает реактивность в фреймворке Vue……………………………………………………………………….. 36

Двустороннее связывание с помощью v-model……………………………………………………………………….. 38

Использование модификатора v-model.lazy…………………………………………………………………………….. 41

Связывание реактивных данных и передача свойств с помощью v-bind……………………………… 42

Привязка к классу и атрибутам стиля……………………………………………………………………………………… 44

Перебор коллекции с помощью v-for……………………………………………………………………………………….. 47

Перебор свойств объекта……………………………………………………………………………………………….. 50

Уникальная привязка элемента с помощью атрибута key………………………………………….. 51

Обработка событий v-on…………………………………………………………………………………………………………… 52

Использование модификаторов v-on…………………………………………………………………………….. 53

События клавиатуры с помощью модификаторов клавиш………………………………………… 56

Условный рендеринг элементов с помощью v-if, v-else и v-else-if………………………………………….. 57

Условная видимость элементов с помощью v-show………………………………………………………………… 60

Динамическая отрисовка HTML-кода с помощью v-html………………………………………………………. 61

Отображение текста с помощью v-text…………………………………………………………………………………….. 62

Оптимизация рендеринга с помощью v-once и v-memo…………………………………………………………… 62

Глобальная регистрация компонентов……………………………………………………………………………………. 65

Резюме…………………………………………………………………………………………………………………………………………. 66

Глава 3. Создание более сложных компонентов…………………………………….. 67

Структура однофайлового компонента…………………………………………………………………………………… 67

Использование defineComponent() для поддержки TypeScript………………………………………………. 70

Хуки жизненного цикла компонента………………………………………………………………………………………… 71

setup…………………………………………………………………………………………………………………………………. 73

beforeCreate…………………………………………………………………………………………………………………….. 75

created……………………………………………………………………………………………………………………………… 75

beforeMount…………………………………………………………………………………………………………………….. 75

mounted……………………………………………………………………………………………………………………………. 75

beforeUpdate……………………………………………………………………………………………………………………. 76

updated…………………………………………………………………………………………………………………………….. 76

beforeUnmount…………………………………………………………………………………………………………………. 76

unmounted………………………………………………………………………………………………………………………… 76

Методы……………………………………………………………………………………………………………………………………….. 80

Вычисляемые свойства……………………………………………………………………………………………………………… 82

Наблюдатели……………………………………………………………………………………………………………………………… 84

Наблюдение за изменениями вложенных свойств………………………………………………………. 87

Использование метода this.$watch()……………………………………………………………………………… 89

Возможности слотов………………………………………………………………………………………………………………….. 91

Именованные слоты в теге template с директивой v-slot………………………………………………………… 95

Использование ссылок ref…………………………………………………………………………………………………………. 98

Общая конфигурация компонентов с помощью миксинов…………………………………………………… 100

Локальные стили в компонентах……………………………………………………………………………………………. 104

Применение локальных CSS-стилей к дочернему компоненту………………………………… 107

Применение локальных стилей к содержимому слота……………………………………………… 108

Использование данных компонента в стиле с помощью псевдокласса v-bind()…….. 108

Определение стилей компонентов с помощью CSS-модулей………………………………………………. 110

Резюме………………………………………………………………………………………………………………………………………. 112

Глава 4. Взаимодействие компонентов…………………………………………………. 113

Вложенные компоненты и поток данных в Vue……………………………………………………………………. 113

Использование props для передачи данных в дочерние компоненты……………………… 114

Объявление входных параметров с валидацией и значениями по умолчанию……… 117

Объявление входных параметров с проверкой пользовательских типов……………….. 119

Объявление входных параметров с помощью defineProps()и withDefaults()………….. 122

Взаимодействие компонентов через пользовательские события………………………………………… 123

Определение пользовательских событий с помощью defineEmits()……………………………………. 127

Взаимодействие компонентов с помощью provide/inject…………………………………………………….. 129

Использование provide для передачи данных…………………………………………………………… 129

Использование inject для получения данных…………………………………………………………….. 130

Teleport API………………………………………………………………………………………………………………………………. 131

Реализация модального окна с помощью Teleport и элемента <dialog>……………….. 133

Проблема рендеринга при использовании Teleport………………………………………………….. 140

Резюме………………………………………………………………………………………………………………………………………. 141

Глава 5. Composition API………………………………………………………………………. 143

Создание компонентов в Composition API…………………………………………………………………………….. 143

Управление данными с помощью ref() и reactive()……………………………………………………………….. 144

Использование ref()………………………………………………………………………………………………………. 144

Использование reactive()……………………………………………………………………………………………… 149

Хуки жизненного цикла в Composition API……………………………………………………………………………. 151

Наблюдатели в Composition API……………………………………………………………………………………………. 154

Использование computed()………………………………………………………………………………………………………. 157

Создание многократно используемых компосаблов……………………………………………………………. 159

Резюме………………………………………………………………………………………………………………………………………. 163

Глава 6. Загрузка внешних данных……………………………………………………… 165

Что такое Axios?………………………………………………………………………………………………………………………. 165

Установка Axios……………………………………………………………………………………………………………………….. 166

Загрузка данных с помощью хуков жизненного цикла и Axios…………………………………………… 166

Проблема асинхронных запросов в режиме выполнения……………………………………………………. 170

Создание повторно используемого компонента для выполнения запросов………………………. 173

Хранение данных на стороне браузера………………………………………………………………………………… 176

Резюме………………………………………………………………………………………………………………………………………. 177

Глава 7. Продвинутый рендеринг, динамические компоненты
и плагины…………………………………………………………………………………………….. 179

Функция рендеринга и JSX……………………………………………………………………………………………………… 179

Использование функции рендеринга………………………………………………………………………….. 179

Использование функции h для создания VNode………………………………………………………… 180

JavaScript XML в функции рендеринга……………………………………………………………………….. 182

Функциональный компонент………………………………………………………………………………………………….. 183

Определение props и emits для функционального компонента……………………………………………. 185

Пользовательская функциональность глобального уровня с помощью плагинов Vue…….. 185

Динамический рендеринг с помощью тега <component>……………………………………………………. 188

Кеширование экземпляра неактивного компонента с помощью <keep-alive>…………………… 189

Резюме………………………………………………………………………………………………………………………………………. 191

Глава 8. Маршрутизация……………………………………………………………………… 193

Что такое маршрутизация?…………………………………………………………………………………………………….. 193

Использование Vue Router………………………………………………………………………………………………………. 194

Установка Vue Router…………………………………………………………………………………………………… 194

Определение маршрутов……………………………………………………………………………………………… 196

Создание экземпляра маршрутизатора……………………………………………………………………… 199

Подключение экземпляра маршрутизатора к приложению Vue……………………………… 200

Рендеринг текущей страницы с помощью RouterView………………………………………………. 201

Панель навигации с помощью компонента RouterLink…………………………………………….. 202

Передача данных между маршрутами………………………………………………………………………………….. 204

Передача параметров маршрута с помощью props……………………………………………………………… 208

Навигационные хуки……………………………………………………………………………………………………………….. 209

Глобальные навигационные хуки………………………………………………………………………………. 209

Навигационные хуки уровня маршрута…………………………………………………………………….. 210

Навигационные хуки уровня компонента………………………………………………………………….. 211

Создание вложенных маршрутов…………………………………………………………………………………………… 213

Создание динамических маршрутов……………………………………………………………………………………… 215

Переход назад и вперед с помощью экземпляра маршрутизатора…………………………………….. 218

Обработка неопределенных маршрутов……………………………………………………………………………….. 219

Резюме………………………………………………………………………………………………………………………………………. 221

Глава 9. Управление состояниями с помощью Pinia…………………………….. 223

Что такое управление состояниями в Vue?……………………………………………………………………………. 223

Что такое Pinia………………………………………………………………………………………………………………………….. 225

Создание хранилища pizzas для Pizza House………………………………………………………………………… 226

Создание хранилища cart для Pizza House……………………………………………………………………………. 230

Использование хранилища cart в компоненте………………………………………………………………………. 231

Добавление элементов в корзину из галереи………………………………………………………………………… 232

Отображение элементов корзины с помощью действий………………………………………………………. 235

Удаление товаров из хранилища cart……………………………………………………………………………………. 239

Модульное тестирование хранилищ Pinia…………………………………………………………………………….. 241

Подписка на изменения хранилища и добавление побочных эффектов…………………………….. 241

Резюме………………………………………………………………………………………………………………………………………. 244

Глава 10. Переходы и анимация в Vue…………………………………………………. 245

Что такое CSS-переходы и CSS-анимация?…………………………………………………………………………… 245

Компонент transition в Vue……………………………………………………………………………………………………… 246

Использование атрибутов с пользовательскими классами переходов……………………. 249

Эффект перехода при первом рендеринге с помощью appear………………………………….. 250

Создание перехода для группы элементов……………………………………………………………………………. 251

Создание переходов для маршрутов……………………………………………………………………………………… 252

Использование событий перехода для управления анимацией………………………………………….. 253

Резюме………………………………………………………………………………………………………………………………………. 255

Глава 11. Тестирование в Vue………………………………………………………………. 257

Общие сведения о модульном и сквозном тестировании……………………………………………………… 257

Vitest как инструмент для модульного тестирования…………………………………………………………… 259

Настройка Vitest с помощью параметров и файла конфигурации……………………………………… 259

Создание вашего первого теста……………………………………………………………………………………………… 261

Тестирование компосаблов, не использующих хуки жизненного цикла……………………………. 266

Тестирование компосаблов с хуками жизненного цикла…………………………………………………….. 269

Тестирование компонентов с помощью Vue Test Utils………………………………………………………….. 274

Тестирование событий компонента……………………………………………………………………………………….. 277

Пользовательский интерфейс Vitest……………………………………………………………………………………….. 279

Использование Vitest с инструментами для оценки покрытия кода……………………………………. 280

Сквозное тестирование с помощью PlaywrightJS………………………………………………………………….. 284

Отладка сквозных тестов с помощью расширения Playwright Test для VSCode………………… 291

Резюме………………………………………………………………………………………………………………………………………. 293

Глава 12. Непрерывная интеграция и непрерывное развертывание
Vue-приложений…………………………………………………………………………………… 295

CI/CD в разработке программного обеспечения………………………………………………………………….. 295

Непрерывная интеграция…………………………………………………………………………………………….. 296

Непрерывная доставка………………………………………………………………………………………………… 296

Непрерывное развертывание………………………………………………………………………………………. 296

Конвейер CI/CD с помощью GitHub Actions………………………………………………………………………….. 297

Непрерывное развертывание с помощью Netlify………………………………………………………………….. 301

Развертывание с помощью Netlify CLI…………………………………………………………………………………… 303

Резюме………………………………………………………………………………………………………………………………………. 304

Глава 13. Рендеринг на стороне сервера в фреймворке Vue………………….. 305

Рендеринг на стороне клиента в Vue……………………………………………………………………………………… 305

Рендеринг на стороне сервера (SSR)……………………………………………………………………………………… 306

Рендеринг на стороне сервера с помощью Nuxt.js……………………………………………………………….. 311

Генератор статических сайтов (SSG)…………………………………………………………………………………….. 319

Напоследок………………………………………………………………………………………………………………………………. 320

Предметный указатель…………………………………………………………………………. 323

Об авторе……………………………………………………………………………………………… 331

Об изображении на обложке………………………………………………………………… 333

Добавить комментарий