Contexto Page

  • Tipo: object
  • Origem: Contexto Nullstack
  • Disponibilidade: server/client
  • readwrite em ambos server e client

Ele fornece informações sobre as metatags da head do documento.

Chaves de page serão usadas para gerar as metatags durante a renderização no lado do servidor e devem ser atribuídas antes do ciclo initiate ser resolvido.

As seguintes chaves estão disponíveis no objeto:

  • title: string
  • image: string (URL absoluto ou relativo)
  • description: string
  • canonical: string (URL absoluto ou relativo)
  • locale: string
  • robots: string
  • schema: object
  • changes: string
  • priority: number
  • status: number

Quando a chave title é atribuída no lado do client, o título do documento será atualizado.

Nullstack utiliza as chaves changes e priority para gerar o sitemap.xml.

O mapa do site é gerado automaticamente apenas ao utilizar a geração de site estático e deve ser gerado manualmente em aplicativos com a renderização no lado do servidor.

A chave changes representa a chave changefreq no sitemap.xml e se for atribuída deverá ser um dos seguintes valores:

  • always
  • hourly
  • daily
  • weekly
  • monthly
  • yearly
  • never

A chave priority é um número entre 0.0 e 1.0 que representa a chave priority no sitemap.xml.

Nullstack não define uma prioridade padrão, no entanto, sitemaps assumem uma prioridade 0.5 quando não são definidas explicitamente.

Além de title e locale, todas as outras chaves tem padrões sensíveis e gerados com base no escopo do aplicativo.

import Nullstack from 'nullstack';

class Page extends Nullstack {

  prepare({project, page}) {
    page.title = `${project.name} - Título da página`;
    page.image = '/imagem.jpg';
    page.description = 'Meta descrição da página';
    page.canonical = 'http://absoluto.url/canonical-link';
    page.locale = 'pt-BR';
    page.robots = 'index, follow';
    page.schema = {};
    page.changes = 'weekly';
    page.priority = 1;
  }

  render({page}) {
    return (
      <div>
        <h1>{page.title}</h1>
        <p>{page.description}</p>
      </div>
    )
  }

}

export default Page;

Eventos Personalizados

Atualizando page.title gerará um evento personalizado.

import Nullstack from 'nullstack';

class Analytics extends Nullstack {

  hydrate({page}) {
    window.addEventListener(page.event, () => {
      console.log(page.title);
    });
  }

}

export default Analytics;

Páginas de erro

Se durante o processo de renderização no lado do servidor o page.status estiver com qualquer valor além de 200, seu aplicativo receberá outra passagem na renderização e lhe possibilitará ajustar a interface de acordo com o status retornado.

A chave status será gerada na resposta HTTP.

O status da página será modificado para 500 e receberá outra passagem na renderização se a página gerar uma exceção enquanto renderiza.

O status das respostas de funções do servidor será definido no page.status.

import Nullstack from 'nullstack';
import ErrorPage from './ErrorPage';
import HomePage from './HomePage';

class Application extends Nullstack {

  // ...

  render({page}) {
    return (
      <main>
        {page.status !== 200 && <ErrorPage route="*" />}
        <HomePage route="/" />
      </main>
    )
  }

}

export default Application;

🔥 A atribuição à chave status durante o modo aplicativo de página única não terá efeito.

Próximo Passo

⚔ Aprenda sobre a chave project do contexto.