- Главная
- Проекты на Vue
- Генератор случайных цитат
Генератор случайных цитат
Создание динамических и интерактивных элементов для сайта — одна из ключевых задач современной фронтенд-разработки. Фреймворк Vue.js значительно упрощает этот процесс, предлагая интуитивно понятную реактивную модель.
Этот генератор случайных цитат — наглядный пример того, как с помощью Vue можно быстро и элегантно реализовать функциональный компонент без сложных манипуляций с DOM.
Особенностью данного компонента является работа с внешними данными через API. В нашем случае это загрузка цитат из локального JSON-файла, но этот же принцип легко масштабируется до работы с любым внешним API. Такой подход открывает огромные возможности: вы можете подключить компонент к базе данных, сервису цитат в реальном времени или любому другому источнику данных, при этом сама логика компонента останется неизменной.
Нажимайте на кнопки, чтобы выбрать следующую цитату или язык. Одним словом, оцените его в работе!
Read and think about it! Прочитай и задумайся!
{{obj.quote}}
Внимание! Представленный код — это готовый компонент, но для его работы на странице должен быть установлен и подключен фреймворк Vue. Если вы начинающий разработчик, просто добавьте строку <script src="https://unpkg.com/vue@3/dist/vue.global.js"></script>
в раздел <head> вашего HTML, и всё заработает.
Как работает этот генератор цитат на Vue?
Давайте разберем код, чтобы понять, как просто и элегантно можно создать мультиязычный генератор случайных цитат на Vue.
HTML (Шаблон компонента)
В шаблоне мы используем условный рендеринг и реактивные данные для создания интерфейса. Ключевые моменты:
<button @click="handleRu" :class="{active: !lang}">– Обрабатывает клик по кнопке русского языка и динамически добавляет CSS-классactive, когда русский язык выбран.<span v-if="!lang">Read and think about it!</span>– Условно отображает текст на английском или русском языке в зависимости от значения реактивной переменнойlang.{{obj.quote}}– Реактивно отображает текст цитаты, который автоматически обновляется при изменении данных.<button class="app__btn" @click="getQuote">– При клике на эту кнопку вызывается метод для получения новой случайной цитаты.
CSS (Стилизация)
Стили создают современный адаптивный интерфейс:
- Контейнер
#appиспользуетdisplay: gridсgap: 30px 0для идеального выравнивания всех элементов по вертикали. width: min(768px, 100%)– обеспечивает адаптивность, ограничивая максимальную ширину 768px, но на маленьких экранах занимая 100% ширины..app__lang button.active– делает активную кнопку языка полностью непрозрачной и жирной, в то время как неактивные кнопки полупрозрачны.
JS (Логика на Vue 3 Composition API)
Логика компонента интуитивно понятна и эффективна:
- Состояние: Мы используем реактивные ссылки
let obj = ref({quote: '', author: ''})для хранения текущей цитаты иlet lang = ref(true)для отслеживания выбранного языка (true— русский,false— английский). - Метод
getQuote: Асинхронно загружает массив цитат из JSON-файла, выбирает случайный элемент и обновляетobj.valueв зависимости от выбранного языка. - Методы
handleRuиhandleEn: Переключают язык и автоматически загружают новую цитату на выбранном языке, предотвращая лишние запросы если язык уже активен. - Хук
onMounted: Гарантирует, что первая цитата загружается сразу после инициализации компонента. - Реактивность Vue: При изменении obj.value или lang.value Vue автоматически обновляет соответствующие элементы в DOM — текст цитат, автора и интерфейсные надписи, создавая бесшовный пользовательский опыт.
Понравился компонент?
Это лишь маленький пример того, что мы можем создать для вашего проекта.
Мы специализируемся на разработке креативных, интерактивных и удобных веб-решений, которые оживляют сайт и вовлекают пользователей. Хотите уникальный виджет, сложный личный кабинет или динамичный интерфейс? Мы готовы воплотить это в жизнь!
Свяжитесь с нами, и мы обсудим вашу идею!