#vue.js #nuxt.js #splash-screen #nuxtjs
#vue.js #nuxt.js #заставка #nuxtjs
Вопрос:
Я попытался добавить загрузчик, как показано на nuxt.js документация между маршрутами, но она не работает. Но я не могу добавить экран-заставку перед запуском приложения.
Фрагмент кода в моих компонентах / loading.vue
<template>
<div v-if="loading" class="loading-page">
<p>Loading...</p>
</div>
</template>
<script>
export default {
data: () => ({
loading: false
}),
methods: {
start(){
this.loading = true
},
finish(){
this.loading = false
}
}
}
</script>
В nuxt.js.config
export default {
...
loading: '~/components/loading.vue'
...
}
Ответ №1:
Насколько я знаю, вы не можете использовать компонент Vue в качестве индикатора загрузки вашего приложения Nuxt.
Вместо этого вам нужно будет создать HTML-документ. Этот HTML — документ не обязательно должен иметь знак <html>
<head>
или <body>
. Это просто должна быть заставка, которую вы хотите показать.
Вот как я это сделал:
- Создайте HTML-документ
~/assets/loading.html
- Добавьте следующее в
nuxt.config.js
файл.
loadingIndicator: {
name: '~/assets/loading.html'
}
- Сохраните и перезагрузите свою страницу, теперь у вас должен быть пользовательский индикатор загрузки / заставка.
Пример HTML-файла:
Вот очень простой файл для отображения изображения заставки при загрузке приложения nuxt.
<div style="height: 100vh; width: 100vw; display: flex; align-items: center; justify-content: center; flex-direction: column; background-color: #004066; margin-left: -8px; margin-top: -8px; overflow: hidden;">
<img width="90%" src="<%= options.img %>">
</div>
ПРИМЕЧАНИЕ:
Обратите внимание на <%= options.img %>
. Я использую параметры, которые можно определить в nuxt.config.js
простом добавлении дополнительных ключей loadingIndicator
, пример можно увидеть ниже.
loadingIndicator: {
name: '~/assets/loading.html',
img: '/loading.gif'
}
ПРИМЕЧАНИЕ 2:
При доступе к ресурсам, таким как изображения в индикаторе загрузки, вам нужно будет поместить их в /static
папку.
Документация: https://nuxtjs.org/docs/2.x/features/loading#custom-indicators
Официальные примеры: https://github.com/nuxt/nuxt.js/tree/dev/packages/vue-app/template/views/loading