Carregamento
De imediato, a Nuxt dá-nos o seu componente de barra de progresso de carregamento que é mostrado entre as rotas. Podemos personalizá-lo, desativá-lo ou até criar o nosso próprio componente de carregamento.
Personalizar a Barra de Progresso
Entre outras propriedades, a cor, o tamanho, a duração e a direção da barra de progresso podem ser personalizadas de acordo com as necessidades da nossa aplicação. Isto é feito ao atualizar a propriedade loading do nuxt.config.js com as propriedades correspondentes.
Por exemplo, para definir uma barra de progresso azul com uma altura de 5px, atualizamos o nuxt.config.js para o seguinte:
export default {
loading: {
color: 'blue',
height: '5px'
}
}
throttle: 0.Lista de propriedades para personalizar a barra de progresso.
| Chave | Tipo | Padrão | Descrição | |
|---|---|---|---|---|
color |
String |
'black' |
Cor de folha de estilo da barra de progresso | |
failedColor |
String |
'red' |
Cor de folha de estilo da barra de progresso quando um erro é acrescentado durante o desenho da rota (se os dados ou a busca de dados devolverem um erro, por exemplo). | |
height |
String |
'2px' |
Altura da barra de progresso (utilizada na propriedade de estilo da barra de progresso). | |
throttle |
Number |
200 |
Em milissegundos, espera o tempo especificado antes de apresentar a barra de progresso. Útil para evitar que a barra fique intermitente. | |
duration |
Number |
5000 |
Em milissegundos, a duração máxima da barra de progresso, a Nuxt assume que a rota será desenhada antes de 5 segundos. | |
continuous |
Boolean |
false |
Manter a animação da barra de progresso quando o carregamento demora mais do que a duração. | |
css |
Boolean |
true |
Definir como false para remover os estilos predefinidos da barra de progresso (e adicionar os nossos próprios estilos). |
|
rtl |
Boolean |
false |
Definir a direção da barra de progresso da direita para a esquerda. |
Desativar a Barra de Progresso
Se não quisermos exibir a barra de progresso entre as rotas, adicionamos loading: false no nosso ficheiro nuxt.config.js:
export default {
loading: false
}
A propriedade loading dá-nos a opção de desativar a barra de progresso de carregamento predefinida numa página específica:
<template>
<h1>My page</h1>
</template>
<script>
export default {
loading: false
}
</script>
Iniciar Programaticamente a Barra de Carregamento
A barra de carregamento também pode ser iniciada programaticamente nos nossos componentes, ao chamar this.$nuxt.$loading.start() para iniciar a barra de carregamento e this.$nuxt.$loading.finish() para terminá-la.
A propriedade $loading pode não estar imediatamente disponível para ser usada durante o processo de montagem do nosso componente de página. Para contornar isto, se quisermos iniciar o carregador no método mounted, precisamos envolver as nossas chamadas do método $loading dentro de this.$nextTick como mostrado abaixo:
export default {
mounted() {
this.$nextTick(() => {
this.$nuxt.$loading.start()
setTimeout(() => this.$nuxt.$loading.finish(), 500)
})
}
}
O Interior da Barra de Progresso
Infelizmente, não é possível que o componente de carregamento saiba antecipadamente quanto tempo demorará a carregar uma nova página. Por isto, não é possível animar com exatidão a barra de progresso para 100% do tempo de carregamento.
O componente de carregamento da Nuxt resolve isto parcialmente, permitindo que definamos a duration, que deve ser definida como uma estimativa de quanto tempo o processo de carregamento levará. A menos que usemos um componente de carregamento personalizado, a barra de progresso sempre se moverá de 0% a 100% no tempo de duration (independentemente da progressão real). Quando o carregamento demorar mais do que o tempo de duration, a barra de progresso permanecerá em 100% até o carregamento terminar.
Podemos alterar o comportamento predefinido ao definir continuous como true. Depois de atingir 100%, a barra de progresso começará a diminuir para 0% novamente no tempo de duration. Se o carregamento ainda não estiver concluído depois de atingir 0%, aumentará novamente de 0% para 100%. O processo repete-se até ao fim do carregamento:
export default {
loading: {
continuous: true
}
}
Exemplo duma barra de progresso contínua:

Usar um Componente de Carregamento Personalizado
Também podemos criar o nosso próprio componente que a Nuxt chamará no lugar do componente predefinido da barra de progresso de carregamento. Para isto, precisamos dar um caminho ao nosso componente na opção loading. Então, o nosso componente será chamado diretamente pela Nuxt.
O nosso componente tem de expor alguns desses métodos:
| Método | Obrigatório | Descrição |
|---|---|---|
start() |
Obrigatório | Chamada quando uma rota é alterada, é aqui que apresentamos o nosso componente. |
finish() |
Obrigatório | Chamada quando uma rota é carregada (e os dados são obtidos), é aqui que escondemos o nosso componente. |
fail(error) |
Opcional | Chamada quando não foi possível carregar uma rota (não foi possível obter os dados, por exemplo). |
increase(num) |
Opcional | Chamada durante o carregamento do componente de rota, num é um número inteiro < 100. |
Podemos criar o nosso componente personalizado em components/LoadingBar.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>
<style scoped>
.loading-page {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: rgba(255, 255, 255, 0.8);
text-align: center;
padding-top: 200px;
font-size: 30px;
font-family: sans-serif;
}
</style>
Depois, atualizamos o nosso nuxt.config.js para dizer a Nuxt para usar o nosso componente:
export default {
loading: '~/components/LoadingBar.vue'
}
A Propriedade do Indicador de Carregamento
Ao executar a Nuxt no modo de aplicação de página única, não existe conteúdo do lado do servidor no primeiro carregamento da página. Assim, em vez de mostrar uma página em branco enquanto a página carrega, a Nuxt dá-nos um componente giratório que podemos personalizar para adicionar as nossas próprias cores ou fundo e até mudar o indicador:
export default {
loadingIndicator: {
name: 'circle',
color: '#3B8070',
background: 'white'
}
}
Indicadores Embutidos
Estes indicadores são importados do incrível projeto SpinKit . Podemos consultar a sua página de demonstração para pré-visualizar os componentes giratórios. Para utilizar um destes componentes giratórios, só temos de adicionar o seu nome à propriedade name. Não é necessário importar ou instalar nada. Eis uma lista de indicadores embutidos que podemos utilizar:
-
'circle' -
'cube-grid' -
'fading-circle' -
'folding-cube' -
'chasing-dots' -
'nuxt' -
'pulse' -
'rectangle-bounce' -
'rotating-plane' -
'three-bounce' -
'wandering-cubes'
Os indicadores embutidos suportam as opções color e background.
Indicadores Personalizados
Se precisarmos do nosso próprio indicador especial, um valor de sequência de caracteres (String) ou uma chave de nome (Name) também pode ser um caminho para um modelo de marcação de hipertexto do código-fonte do indicador! Todas as opções também são passadas para o modelo de marcação de hipertexto.
O código-fonte do componente de carregamento embutido da Nuxt também está disponível se precisarmos duma base!
Sébastien Chopin
Nazaré da Piedade
Nobu
川音리오
Maciek Palmowski
Nestor Vera
Daniel Roe
Yue Yang
Jeronimas
Clément Ollivier
Alexander Lichter
N3-rd
Adrien Zaganelli
Mag
Stefan Huber
Olga Bulat
Paiva
Florian Reuschel
Savas Vedova
HIJACK
Vinícius Alves
Kareem Dabbeet
Valentín Costa
Ryan Skinner
Alex Hirzel
Ajeet Chaulagain
René Eschke
Nico Devs
Muhammad
Naoki Hamada
Tom
Yann Aufray
Anthony Chu
Nuzhat Minhaz
Lucas Portet
Richard Schloss
Bobby
bpy
Antony Konstantinidis
Hibariya
Jose Seabra
Eze
Florian Lefebvre
Lucas Recoaro
Julien SEIXAS