LoadingBar — это плагин библиотеки Quasar Framework, предназначенный для отображения индикатора загрузки в верхней части страницы. Он предоставляет удобный способ визуализировать асинхронные процессы и действия пользователя.
Для начала необходимо подключить плагин в проекте Quasar. В файле
quasar.conf.js в разделе plugins указывают
LoadingBar:
import { LoadingBar } from 'quasar'
export default function (/* { app, router, ... } */) {
app.use(LoadingBar, {
color: 'primary',
size: '4px',
position: 'top',
skipHijack: false
})
}
Параметры инициализации:
primary, secondary,
accent и др.).top или
bottom).true, LoadingBar не
будет автоматически отслеживать асинхронные действия Vue Router.После подключения плагин становится доступен глобально через
this.$q.loadingBar в компонентах Vue.
Метод запускает анимацию индикатора с нуля:
this.$q.loadingBar.start()
Полностью останавливает и скрывает индикатор:
this.$q.loadingBar.stop()
Позволяет вручную увеличивать прогресс на определенный процент:
this.$q.loadingBar.increment(10)
Устанавливает прогресс индикатора на конкретное значение:
this.$q.loadingBar.set(50)
LoadingBar предоставляет гибкую настройку через параметры при инициализации и методы:
setDefaults или при создании плагина.top или
bottom, чтобы подстроиться под макет.Пример изменения цвета во время работы:
this.$q.loadingBar.setDefaults({ color: 'accent' })
this.$q.loadingBar.start()
LoadingBar идеально подходит для работы с axios или
fetch запросами. Типичный пример использования с axios:
import axios from 'axios'
this.$q.loadingBar.start()
axios.get('/api/data')
.then(response => {
this.$q.loadingBar.set(70) // визуально показать прогресс
return response.data
})
.finally(() => {
this.$q.loadingBar.stop()
})
start() запускает индикатор в начале запроса.set() или increment() позволяет отображать
промежуточный прогресс.stop() скрывает полосу после завершения.Если skipHijack установлен в false,
LoadingBar может автоматически отслеживать переходы Vue Router. Пример
стандартного поведения:
// quasar.conf.js
app.use(LoadingBar, { skipHijack: false })
При переходе между страницами:
increment и set для
детализированной визуализации прогресса.this.$q.loadingBar.start()
async function loadData() {
try {
const users = await axios.get('/api/users')
this.$q.loadingBar.increment(30)
const posts = await axios.get('/api/posts')
this.$q.loadingBar.increment(50)
const comments = await axios.get('/api/comments')
this.$q.loadingBar.set(100)
} catch (error) {
console.error(error)
} finally {
this.$q.loadingBar.stop()
}
}
loadData()
increment и
set.try/catch/finally для гарантированного
скрытия полосы.LoadingBar является мощным инструментом для улучшения UX, позволяя четко и наглядно информировать пользователя о состоянии процессов, не перегружая интерфейс дополнительными компонентами.