Современное чат-приложение на Vue 3 + Pinia с поддержкой сохранения истории сообщений и управлением состоянием.
- Vue 3 - Progressive JavaScript Framework
- Pinia - State management для Vue 3
- Vite - Modern frontend build tool
- Vue Router 4 - Client-side routing
- Отправка и получение сообщений в реальном времени
- Имитация отказа отправки (10% вероятность)
- Повторная отправка неудачных сообщений
- Сохранение истории сообщений в localStorage
- Синхронизация между вкладками браузера
- Ввод имени пользователя
npm installnpm run devПриложение откроется на http://localhost:5173
npm run buildnpm run previewsrc/
├── components/ # Vue компоненты
│ ├── Chat.vue # Основной компонент чата
│ ├── Message.vue # Компонент сообщения
│ ├── YourNameComponent.vue # Ввод имени пользователя
│ └── ui/ # UI компоненты
│ ├── CustomButton.vue
│ └── CustomInput.vue
├── store/
│ └── chatStore.ts # Pinia store для управления состоянием
├── models/
│ └── Message.ts # Модель сообщения
├── router/
│ └── index.ts # Vue Router конфигурация
├── assets/
│ └── css/
│ └── main.css # Основные стили
├── utils.ts # Утилиты
├── App.vue # Корневой компонент
└── main.ts # Entry point
- Отправка сообщения: User → ChatScreen Component → Pinia Store
- Получение сообщения: Pinia Store → MessageItem Component → Render
- Сохранение: Pinia Store → localStorage
- Навигация: Vue Router с автоматической переадресацией на основе auth state
- Введите имя пользователя на стартовой странице
/name - Напишите сообщение и нажмите "Отправить" или Enter
- Некоторые сообщения могут не отправиться (красная граница)
- Нажмите на иконку повтора, чтобы повторно отправить сообщение
- История сохраняется автоматически
history- Массив успешно отправленных сообщенийmessage- Текущее сообщение для синхронизации между вкладками
- ESLint - Code linting и форматирование
- TypeScript - Type-safe development
- BEM - CSS naming convention
Запуск линтера:
npm run lintMIT