A propriedade render
O Nuxt permite você personalizar as opções do tempo de execução para renderização de páginas
A propriedade bundleRenderer
-
Tipo:
Object
Use esta opção para personalizar pacote renderizador da Renderização no Lado do Servidor do Vue. Esta opção é ignorada se houver definido
ssr: false.
export default {
render: {
bundleRenderer: {
directives: {
custom1(el, dir) {
// alguma coisa...
}
}
}
}
}
Saiba mais sobre as opções disponíveis na Referência da API de Renderização no Lado do Servidor do Vue . É recomendado não usar esta opção visto que o Nuxt já está fornecendo os melhores padrões de renderização no lado do servidor e uma configuração errada pode levar a problemas na Renderização no Lado do Servidor.
A propriedade etag
-
Tipo:
Object-
Valor padrão:
{ weak: true }
-
Valor padrão:
Para desativar o etag para páginas defina etag: false
Consulte a documentação do etag para conhecer as possíveis opções.
Você pode usar a sua própria função hash ao especificar etag.hash:
import { murmurHash128 } from 'murmurhash-native'
export default {
render: {
etag: {
hash: html => murmurHash128(html)
}
}
}
Neste caso usamos o murmurhash-native , o qual é mais rápido para tamanhos de corpo de HTML muito maiores. Repare que a opção weak é ignorada, quando estiver especificando a sua própria função de hash.
A propriedade compressor
-
Tipo
Object-
Valor padrão:
{ threshold: 0 }
-
Valor padrão:
Quando estiver fornecendo um objeto, o intermediário do compression será usado (com as respetivas opções).
Se você quiser usar o seu próprio intermediário de compressão, você pode referenciar ele diretamente (por exemplo, otherComp({ myOptions: 'example' })).
Para desativar a compressão, use compressor: false.
A propriedade fallback
-
Tipo
Object-
Valor padrão:
{ dist: {}, static: { skipUnknown: true } } -
a chave
disté para rotas correspondentes ao publicPath (por exemplo:/_nuxt/*) -
a chave
staticé para rotas correspondentes ao/*
-
Valor padrão:
Os valores
distestaticsão encaminhados para o intermediário serve-placeholder .
Se você quiser desativar um deles ou ambos, você pode passar um valor de falsidade.
Exemplo permitindo a extensão .js para roteamento (por exemplo: /repos/nuxt.js):
export default {
render: {
fallback: {
static: {
// Evite enviar o 404 para estas extensões
handlers: {
'.js': false
}
}
}
}
}
A propriedade http2
-
Tipo
Object-
Valor padrão:
{ push: false, pushAssets: null }
-
Valor padrão:
Ativa o empurrar de cabeçalhos de HTTP2
Você pode controlar quais ligações empurrar usando a função pushAssets.
Exemplo:
pushAssets: (req, res, publicPath, preloadFiles) =>
preloadFiles
.filter(f => f.asType === 'script' && f.file === 'runtime.js')
.map(f => `<${publicPath}${f.file}>; rel=preload; as=${f.asType}`)
Você pode adicionar adicionar os seus próprios recursos ao arranjo também. Usando o req e o res você pode decidir quais ligações para empurrar baseado nos cabeçalhos da requisição, por exemplo usando o cookie com a versão da aplicação.
Os recursos serão juntados com o , e passados como um cabeçalho Link único.
A propriedade asyncScripts
-
Tipo:
Boolean-
Valor padrão:
false
-
Valor padrão:
Adiciona um atributo
asyncpara os marcadores de<script>para pacotes do Nuxt, habilitando eles a serem requisitados em paralelo para parseamento (disponível desde a versão2.14.8+do Nuxt). Mais informações .
A propriedade injectScripts
-
Tipo:
Boolean-
Valor padrão:
true
-
Valor padrão:
Adiciona o
<script>para os pacotes do Nuxt, defina ele parafalsepara renderizar HTML puro sem JavaScript (disponível desde a versão2.14.8+do Nuxt)
A propriedade resourceHints
-
Tipo:
Boolean-
Valor padrão:
true
-
Valor padrão:
Adiciona as ligações
prefetchepreloadpara acelerar o tempo de carregamento da página.
Você talvez queira apenas desativar esta opção se você tiver muitas páginas e rotas.
A propriedade ssr
-
Tipo:
Boolean-
Valor padrão:
true -
falseonly client side rendering
-
Valor padrão:
Ativa a Renderização no Lado do Servidor
Esta opção é automaticamente definida baseada no valor global de ssr se não for fornecida. Isto pode ser útil para dinamicamente ativar/desativar a Renderização no Lado do Servidor em tempo de execução depois da construção da imagem (com o docker por exemplo).
A propriedade crossorigin
-
Tipo:
String -
Valor padrão:
undefined
Configura o atributocrossoriginnos marcadores<link rel="stylesheet">e<script>dentro do HTML gerado.
Mais Informações: atributos de definições de CORS
A propriedade ssrLog
-
Tipo:
Boolean|String-
Valor padrão:
trueem modo de desenvolvimento efalseem produção
-
Valor padrão:
Encaminha os registos do lado do servidor para o navegador para melhor depuração (apenas disponível em desenvolvimento)
Para colapsar os registos, use o valor 'collapsed'.
A propriedade static
-
Tipo:
Object-
Valor padrão:
{}
-
Valor padrão:
Configura o comportamento do diretório
static/
Consulta a documentação serve-static para conhecer as possíveis opções.
Adicionalmente a eles, nós introduzimos uma opção prefix a qual valor padrão é definida para true. Ela adicionará a base do roteador aos seus recursos estáticos.
Exemplo:
-
Recursos:
favicon.ico -
Base do Roteador:
/t -
Com o
prefix: true(valor padrão):/t/favicon.ico -
Com o
prefix: false:/favicon.ico
Avisos:
Algumas restrições de URL podem não respeitar o prefixo.
A propriedade dist
-
Tipo:
Object-
Valor padrão:
{ maxAge: '1y', index: false }
-
Valor padrão:
Opções usadas para servir a distribuição de ficheiros. Somente aplicável em produção.
Consulte a documentação serve-static para conhecer as possíveis opções.
A propriedade csp
-
Tipo:
BooleanouObject-
Valor padrão:
false
-
Valor padrão:
Use isto para configurar a Política de Segurança de Conteúdo para carregar recursos externos
Pré-requisitos:
Estas definições de Política de Segurança de Conteúdo apenas são eficazes quando estiver usando o Nuxt com o target: 'server' para servir a sua aplicação Renderizada no Lado do Servidor. As políticas definidas conforme o csp.policies são adicionadas ao cabeçalho Content-Security-Policy da resposta do HTTP.
Atualizando definições:
Estas definições são lidas pelo servidor do Nuxt diretamente a partir do ficheiro nuxt.config.js. Isto significa para mudanças para essas definições tem efeito quando o servidor é reiniciado. Não há necessidade de reconstruir a aplicação para atualizar as definições da Política de Segurança de Conteúdo.
Marcador meta do HTML:
NO sentido de adicionar <meta http-equiv="Content-Security-Policy"/> ao <head> você precisa definir o csp.addMeta para true. Repare que essa funcionalidade é independente da configuração do csp.policies:
-
ele apenas adiciona uma política do tipo
script-src, e -
a política
script-srcapenas contém os hashes dos marcadores<script>em linha.
Quando o csp.addMeta estiver definido para true, o conjunto completo das políticas definidas continuam a serem adicionadas ao cabeçalho da resposta do HTTP.
Repare que as hashes da Política de Segurança de Conteúdo não serão adicionadas como <meta> se a política script-src conter o 'unsafe-inline'. Isto é para navegador ignorar 'unsafe-inline' se as hashes estiverem presentes. Defina a opção unsafeInlineCompatibility para true se você quiser ambas hashes e o 'unsafe-inline' para compatibilidade com a versão 1 da Política de Segurança de Conteúdo. Neste caso o marcador <meta> continuará contendo somente as hashes dos marcadores <script> em linha, e as políticas definidas conforme csp.policies serão usadas dentro do cabeçalho Content-Security-Policy da resposta do HTTP.
export default {
render: {
csp: true
}
}
// OU
export default {
render: {
csp: {
hashAlgorithm: 'sha256',
policies: {
'script-src': [
'https://www.google-analytics.com',
'https://name.example.com'
],
'report-uri': ['https://report.example.com/report-csp-violations']
},
addMeta: true
}
}
}
// OU
/*
O seguinte exemplo permite o Google Analytics, LogRocket.io, e o Sentry.io
fazerem o registo e rastreio analítico.
Consulte este blogue no Sentry.io
https://blog.sentry.io/2018/09/04/how-sentry-captures-csp-violations
Para saber qual ligação de rastreio você deve usar.
*/
const PRIMARY_HOSTS = `loc.example-website.com`
export default {
render: {
csp: {
reportOnly: true,
hashAlgorithm: 'sha256',
policies: {
'default-src': ["'self'"],
'img-src': ['https:', '*.google-analytics.com'],
'worker-src': ["'self'", `blob:`, PRIMARY_HOSTS, '*.logrocket.io'],
'style-src': ["'self'", "'unsafe-inline'", PRIMARY_HOSTS],
'script-src': [
"'self'",
"'unsafe-inline'",
PRIMARY_HOSTS,
'sentry.io',
'*.sentry-cdn.com',
'*.google-analytics.com',
'*.logrocket.io'
],
'connect-src': [PRIMARY_HOSTS, 'sentry.io', '*.google-analytics.com'],
'form-action': ["'self'"],
'frame-ancestors': ["'none'"],
'object-src': ["'none'"],
'base-uri': [PRIMARY_HOSTS],
'report-uri': [
`https://sentry.io/api/<project>/security/?sentry_key=<key>`
]
}
}
}
}
Clément Ollivier
Daniel Roe
Alex Hirzel
Ajeet Chaulagain
René Eschke
Sébastien Chopin
Nico Devs
Muhammad
Nazaré da Piedade
Naoki Hamada
Tom
Yann Aufray
Anthony Chu
Nuzhat Minhaz
Lucas Portet
Richard Schloss
Xanzhu
bpy
Antony Konstantinidis
Hibariya
Jose Seabra
Eze
Florian LEFEBVRE
Lucas
Julien SEIXAS
Hugo
Sylvain Marroufin
Spencer Cooley
Piotr Zatorski
Vladimir Semenov
Harry Allen
kazuya kawaguchi
Unai Mengual
Hyunseung Lee
Alexandre Chopin
pooya parsa
Nick Medrano
Mosaab Emam
Iljs Путлер Капут
Heitor Ramon Ribeiro
Nero
Yoon Han
Ikko Ashimine
FamCodings
Ayouli
F. Hinkelmann
felipesuri
Christophe Carvalho Vilas-Boas
Leoš Literák
Trizotti
Marcello Bachechi
Rodolphe
Thomas Underwood
Shek Evgeniy
Lukasz Formela
Hugo Torzuoli