Contexto e Auxiliares
O contexto fornece informações adicionais e frequentemente opcionais sobre a requisição atual à aplicação.
O objeto context está disponível em funções de Nuxt específicas como asyncData , plugins , middleware  e nuxtServerInit . Este fornece à aplicação informações adicionais e muitas vezes opcionais sobre a requisição atual.
Primeiro e mais importante, o contexto é utilizado para fornecer acesso a outras partes da aplicação da Nuxt, por exemplo, o armazém de estado da Vuex ou a instância subjacente connect. Desta maneira, temos os objetos req e res do contexto disponível no lado do servidor e o store sempre disponível. Mas com o tempo, o contexto foi estendido com muitas outras variáveis e atalhos úteis. Agora temos acesso às funcionalidades da substituição de módulo instantânea em modo de development, a route atual, params e query da página, bem como a opção de acessar as variáveis de ambiente através do contexto. Além disto, as funções do módulo e os auxiliares podem ser expostos através do contexto para estarem disponíveis tanto no lado do cliente como no lado do servidor.
Todas as chaves de contexto que estão presentes por padrão
function (context) { // Poderia ser `asyncData`, `nuxtServerInit`, ...
  // Sempre disponíveis
  const {
    app,
    store,
    route,
    params,
    query,
    env,
    isDev,
    isHMR,
    redirect,
    error,
    $config
  } = context
  // Disponíveis apenas no lado do servidor
  if (process.server) {
    const { req, res, beforeNuxtRender } = context
  }
  // Disponíveis apenas no lado do cliente
  if (process.client) {
    const { from, nuxtState } = context
  }
}
 context disponível nas Ações de Vuex  ou aquele disponível na função build.extend no nosso nuxt.config.js. Estes não estão relacionados entre si!Saber mais sobre as diferentes chaves de contexto no nosso Glossário Interno .
Utilizar parâmetros de página para a nossa consulta de API
O contexto expõe diretamente os possíveis parâmetros dinâmicos da rota por meio de context.params. No exemplo seguinte, chamamos uma interface de programação de aplicação através do módulo nuxt/http utilizando um parâmetro de página dinâmico como parte do endereço de localização de recurso (URL). Os módulos, como o módulo nuxt/http , podem expor as suas próprias funções, que ficam então disponíveis através do objeto context.app .
Além disto, embrulhamos a chamada à interface de programação de aplicação numa instrução try/catch para lidar com potenciais erros. Com a função context.error, podemos mostrar diretamente a página de erro da Nuxt e passar o erro ocorrido:
export default {
  async asyncData(context) {
    const id = context.params.id
    try {
      // Usar o módulo `nuxtjs/http` aqui exposto por `context.app`
      const post = await context.app.$http.$get(
        `https://api.nuxtjs.dev/posts/${id}`
      )
      return { post }
    } catch (e) {
      // Mostrar a página de erro seguinte com o erro lançado
      context.error(e)
    }
  }
}
 Com a ECMAScript 6 , podemos utilizar esta sintaxe para desestruturar o nosso objeto de contexto. Podemos passar os objetos a que queremos ter acesso e depois podemos utilizá-los no código sem utilizar a palavra context.
export default {
  async asyncData({ params, $http, error }) {
    const id = params.id
    try {
      // Usar o módulo `nuxtjs/http` aqui exposto por `context.app`
      const post = await $http.$get(`https://api.nuxtjs.dev/posts/${id}`)
      return { post }
    } catch (e) {
      // Mostrar a página de erro seguinte com o erro lançado
      error(e)
    }
  }
}
 Em vez disto, queremos utilizar parâmetros de consulta? Podemos então utilizar context.query.id .
Redirecionar os utilizares e acessar o armazém de estado
O acesso ao armazém de estado da Vuex  (quando o temos configurado através do diretório store) também é possível através do contexto. Este fornece um objeto store que pode ser tratado como this.$store em componentes de Vue. Além disto, utilizamos o método redirect, um auxiliar exposto através do contexto, para redirecionar o utilizador no caso de o estado authenticated ser falso :
export default {
  middleware({ store, redirect }) {
    // recuperar chaves através de desestruturação de objetos
    const isAuthenticated = store.state.authenticated
    if (!isAuthenticated) {
      return redirect('/login')
    }
  }
}
 redirect .Auxiliares
Para além dos atalhos no contexto, existem outros pequenos auxiliares presentes na nossa aplicação de Nuxt.
$nuxt: O auxiliar da Nuxt 
O $nuxt é um auxiliar concebido para melhorar a experiência do utilizador e para ser uma escotilha de fuga em algumas situações. É acessível por this.$nuxt em componentes de Vue e por window.$nuxt caso contrário no lado do cliente.
Verificador de conexão
O auxiliar $nuxt fornece uma maneira rápida de descobrir se a conexão de Internet de um utilizador está presente ou não: Este expõe os valores booleanos isOffline e isOnline. Podemos utilizá-los para mostrar mensagem assim que o utilizador estiver desligado da rede (por exemplo):
<template>
  <div>
    <div v-if="$nuxt.isOffline">You are offline</div>
    <Nuxt />
  </div>
</template>
 Acessar à instância de raiz
Além de fornecer recursos de experiência de programação e experiência de utilização, o auxiliar $nuxt também fornece um atalho para a instância raiz da nossa aplicação a partir de todos os outros componentes. Mas isto não é tudo — nós também podemos acessar o auxiliar $nuxt através de window.$nuxt que pode ser usado como uma escotilha de fuga para ganhar acesso a métodos de módulos como $axios de fora dos nossos componentes de Vue. Isto deve ser usado sensatamente e apenas como último recurso.
Atualizar os dados da página
Quando queremos atualizar a página atual para o utilizador, não queremos recarregar totalmente a página, porque podemos atingir o servidor novamente e, pelo menos, reiniciar toda a aplicação de Nuxt. Em vez disto, muitas vezes queremos apenas atualizar os dados, fornecidos por asyncData ou fetch.
Podemos fazer isto utilizando this.$nuxt.refresh()!
<template>
  <div>
    <div>{{ content }}</div>
    <button @click="refresh">Refresh</button>
  </div>
</template>
<script>
  export default {
    asyncData() {
      return { content: 'Created at: ' + new Date() }
    },
    methods: {
      refresh() {
        this.$nuxt.refresh()
      }
    }
  }
</script>
 Controlar a barra de carregamento
Com $nuxt, podemos também controlar a barra de carregamento da Nuxt programaticamente por this.$nuxt.$loading:
export default {
  mounted() {
    this.$nextTick(() => {
      this.$nuxt.$loading.start()
      setTimeout(() => this.$nuxt.$loading.finish(), 500)
    })
  }
}
 Para mais informações, consultar o capítulo correspondente à funcionalidade de carregamento .
Auxiliar onNuxtReady 
Se quisermos executar alguns programas depois que a nossa aplicação de Nuxt tiver sido carregada e estiver pronta, podemos usar a função window.onNuxtReady. Isto pode ser útil quando queremos executar uma função no lado do cliente sem aumentar o tempo de interação do nosso sítio:
window.onNuxtReady(() => {
  console.log('Nuxt is ready and mounted')
})
 Auxiliares de Processo
A Nuxt injeta três valores booleanos (client, server, e static) no objeto global process que nos ajudará a determinar se a nossa aplicação foi desenhada no servidor ou totalmente no cliente, assim como verificar a geração de sítios estáticos. Estes auxiliares estão disponíveis em toda a nossa aplicação e são normalmente utilizadas no código do utilizador de asyncData:
<template>
  <h1>I am rendered on the {{ renderedOn }} side</h1>
</template>
<script>
  export default {
    asyncData() {
      return { renderedOn: process.client ? 'client' : 'server' }
    }
  }
</script>
 No exemplo, renderedOn avaliará como 'server' quando se utiliza a interpretação do lado do servidor e um utilizador acessar à página diretamente. Quando o utilizador navegar para a página a partir de outra parte da aplicação, por exemplo, clicando num <NuxtLink>, este avaliará como cliente.
 
        Sébastien Chopin
       
 
        Nazaré da Piedade
       
 
        Nobu
       
 
        川音리오
       
 
        Maciek Palmowski
       
 
        Nestor Vera
       
 
        Daniel Roe
       
 
        Yue Yang
       
 
        Jeronimas
       
 
        Alessandro Carrano
       
 
        Clément Ollivier
       
 
        Alexander Lichter
       
 
        N3-rd
       
 
        Adrien Zaganelli
       
 
        Mag
       
 
        Stefan Huber
       
 
        Olga Bulat
       
 
        Paiva
       
 
        Florian Reuschel
       
 
        Savas Vedova
       
 
        Steven
       
 
        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