SSR

O Nitro UI tem suporte nativo ao SSR do Vue. Este guia vai ajudar você a habilitá-lo por completo.

Uso

Ao usar o Nitro UI com o framework Nuxt, o SSR do servidor funcionará totalmente por padrão. No entanto, ao usá-lo com Vue puro, você precisará prestar atenção a alguns detalhes para que funcione como esperado.

Injeção de variáveis de cor

Por padrão, o Nitro UI injeta no <head> do documento as variáveis de cor usadas por todos os componentes. Como o documento não é gerenciado pela biblioteca de UI no SSR do Vue, você precisará injetá-las manualmente.

Você pode fazer isso usando o @unhead da seguinte forma:

import { createHead, renderSSRHead } from '@unhead/vue/server'

// Create the header with unhead
const head = createHead()

// Render SSR header and append it to the SSR application instance
const payload = await renderSSRHead(head)
app.head.push(payload.headTags)

Detecção de esquema de cores

O mesmo vale para a detecção do esquema de cores. Para evitar piscadas no SSR por causa da diferença do esquema de cores selecionado, você precisará detectar o esquema de cores do usuário antes da inicialização da aplicação.

Adicionar o script abaixo ao <head> do seu documento detectará se o usuário está usando o tema escuro e, portanto, renderizará o SSR também no tema escuro.

<script>
const theme = localStorage.getItem('vueuse-color-scheme') || 'auto'
if (theme === 'dark' || (theme === 'auto' && window.matchMedia('(prefers-color-scheme: dark)').matches)) {
  document.documentElement.classList.add('dark')
} else {
  document.documentElement.classList.remove('dark')
}
</script>

Exibição de ícones

O Nitro UI empacota os ícones que usa no seu build, então eles são renderizados durante o SSR e funcionam totalmente offline assim que você instala a coleção de ícones localmente, sem nenhuma requisição à API do Iconify. Veja a integração de Ícones para configurar isso e empacotar seus próprios ícones.