Cuidado
A propriedade de criaturas mudou -se para a equipe da Nuxt, que manterá o projeto daqui para frente. Se você quiser continuar usando as criaturas, mude para o garfo de forma ativa em https://github.com/danielroe/beasties. Este repositório agora está arquivado e não receberá atualizações futuras.
As criaturas são um plug-in que envolve o CSS crítico do seu aplicativo e carrega preguiçosos pelo restante.
É um pouco diferente de outras opções, porque não usa um navegador sem cabeça para renderizar o conteúdo. Essa troca permite que as criaturas sejam muito rápidas e leves . Isso também significa que as criaturas inlinem todas as regras CSS usadas pelo seu documento, em vez de apenas as necessárias para o conteúdo acima das dobras. Para alternativas, consulte bibliotecas semelhantes.
O design das criaturas faz com que seja um bom ajuste ao prender CSS crítico para aplicativos de página única pré -renderizada/ssr'd. Foi desenvolvido para ser um excelente elogio ao carregador de pré-render, combinando para melhorar drasticamente o primeiro tempo de pintura para a maioria dos aplicativos de página única.
Rápido - sem navegador, poucas dependências
Integra-se com britters webpack-webpack-plugin
Suporta fontes críticas de pré -carregamento e/ou embaraço
Prunes não utilizados CSS Keyframes e consultas de mídia
Remove as regras CSS inlinadas de folhas de estilos com carregamento preguiçoso
Primeiro, instale as criaturas como uma dependência de desenvolvimento:
NPM I -D Critters
ou
bichos add -d de fios
Importar criaturas de 'criaturas'; const criaturas = novas criaturas ({ // Configuração opcional (veja abaixo)}); const html = `<Style> .red {color: Red} .Blue {color: Blue} </style> <div class =" Blue "> eu sou azul </ div> `; const inlined = wait britters.process (html); console.log (inlined); // "<Style> .Blue {Color: Blue} </style> <div class =" azul "> eu sou azul </div>"
As criaturas também estão disponíveis como um plug-in do Webpack chamado Critters-Webpack-Plugin.
O plug -in do Webpack suporta as mesmas opções de configuração que o pacote principal critters
:
// webpack.config.js+const britters = requer ('criaturas-webpack-plugin'); module.exports = { Plugins: [+ novas criaturas ({+ // Configuração opcional+ pré -carga: 'swap',+ inclui os selecionadores: [/^.btn/, '.banner'],+}) ] }
É isso! O HTML resultante terá seu CSS crítico envolto e as folhas de estilo preguiçosas.
Tudo opcional. Passe para new Critters({ ... })
.
options
path
String Path Base Path Localização dos arquivos CSS (padrão: ''
)
publicPath
String Public Path of the CSS Resources. Este prefixo é removido do href (padrão: ''
)
Estilos embutidos booleanos external
de folhas de estilo externas (padrão: true
)
Número inlineThreshold
folhas de estilo externas embutidas menores que um determinado tamanho (padrão: 0
)
minimumExternalSize
Número Se a folha de estilo externa não crítica estivesse abaixo desse tamanho, basta embalar (padrão: 0
)
pruneSource
boolean Remova regras inlinadas da folha de estilo externa (padrão: false
)
mergeStylesheets
Boolean mesclou folhas de estilos inlinadas em uma única tag <style>
(padrão: true
)
additionalStylesheets
ARRAY <String> Glob para combinar outras folhas de estilo a serem usadas enquanto procura CSS crítico.
reduceInlineStyles
O opção booleano indica se os estilos embutidos devem ser avaliados quanto ao CSS crítico. Por padrão, as tags de estilo embutido serão avaliadas e reescritas para conter apenas CSs críticos. Defina -o como false
para pular estilos de processamento em linha. (Padrão: true
)
String preload
que pré -carregue a estratégia para usar
noscriptFallback
boolean Add <noscript>
Fallback às estratégias baseadas em JS
inlineFonts
Boolean Inline Critical Fonte-Face Regras (Padrão: false
)
pré -encostos preloadFonts
booleanos fontes críticas (padrão: true
)
fonts
taquigrafia booleana para definir inlineFonts
+ preloadFonts
* valores:
true
às regras da face da fonte crítica embutida e pré-carregue as fontes
false
para não incluir regras de font-face e não pré-carregue fontes
Os string keyframes
controlam quais regras dos quadros -chave estão inlinadas.* Valores:
"critical"
: (padrão) Regras de chaves em linha usadas pelo CSS crítico
"all"
Inline todas as regras dos quadros -chave
"none"
remove todas as regras dos quadros -chave
compress
compressa compressa CSS crítico resultante (padrão: true
)
logLevel
String controla o nível de log do plug -in (padrão: "info"
)
Objeto logger
fornece um registrador de registrador personalizado
includeSelectors
regexp | String Forneça uma lista de seletores que devem ser incluídos no CSS crítico. Aceite regexp e string.
Podemos incluir ou excluir regras para fazer parte do CSS crítico adicionando comentários no CSS
Comentários de linha única para incluir/excluir a próxima regra CSS
/ * Critters: exclude */. Selector1 {/ * Esta regra será excluída do CSS crítico */} .Selector2 {/ * Isso será avaliado normalmente */}/ * Critters: inclua */. Selector3 {/ * Esta regra será incluída no CSS crítico */} .Selector4 { / * Isso será avaliado normalmente * /}
Incluindo/excluindo várias regras adicionando marcadores de partida e final
/ * Critters: exclua start */. Selector1 {/ * Esta regra será excluída do CSS crítico */} .Selector2 {/ * Esta regra será excluída do CSS crítico */}/ * criaturas: exclua o final */
/ * Critters: Incluir Start */. Selector3 {/ * Esta regra será incluída no CSS crítico */} .Selector4 {/ * Esta regra será incluída no CSS crítico */}/ * criaturas: inclua fim */
Por padrão, as criaturas avalia o CSS em relação a toda a entrada HTML. As criaturas avaliam o CSS crítico reconstruindo todo o DOM e avaliando os seletores CSS para encontrar nós correspondentes. Geralmente, isso funciona bem como as criaturas é leve e rápido.
Para alguns casos, o HTML de entrada pode ser muito grande ou profundamente aninhado, o que torna o DOM reconstruído muito maior, o que, por sua vez, pode diminuir a velocidade da geração crítica do CSS. As criaturas não estão cientes do tamanho do viewport e de que nós específicos estão acima da dobra, pois não há um navegador sem cabeça envolvido.
Para superar essa questão, as criaturas utilizam contêineres de criaturas .
Um contêiner de criaturas imita a viewport e pode ser ativado adicionando data-critters-container
ao contêiner de nível superior que contém os elementos HTML acima da dobra.
Você pode estimar o conteúdo do seu viewport e adicionar um <Div data-critters-container
> em torno do conteúdo.
<html> <Body> <div class = "contêiner"> <div dados-critadores-contadores>/ * html dentro deste contêiner são usados para avaliar CSS críticos */</div>/ * html é ignorado ao avaliar CSS críticos */</</ Div> <Footer> </do Footer> </body> </html>
Nota: Esta é uma maneira fácil de melhorar o desempenho das criaturas
Interface de logger personalizada:
Tipo: objeto
Função trace
(string) imprime uma mensagem de rastreamento
Função debug
(string) imprime uma mensagem de depuração
Função info
(string) imprime uma mensagem de informação
A função warn
(string) imprime uma mensagem de aviso
Função error
(string) imprime uma mensagem de erro
Controla o nível de log do plug -in. Especifica o nível que o madeireiro deve usar. Um madeireiro não produzirá saída para nenhum nível de log abaixo do nível especificado. Os níveis e pedidos disponíveis são:
"Info" (padrão)
"avisar"
"erro"
"Trace"
"depurar"
"Silencioso"
Tipo: ( "info"
| "warn"
| "error"
| "trace"
| "debug"
| "silent"
)
O mecanismo a ser usado para folhas de estilo de carregamento preguiçoso.
Nota: O JS indica uma estratégia que requer JavaScript (volta a <noscript>
, a menos que seja desativado).
Padrão: Mova os links da folha de estilo para o final do documento e insira metatags de pré -carga em seu lugar.
"Body": mova todos os links de folha de estilo externos para o final do documento.
"Mídia": carregar folhas de estilo de forma assíncrona adicionando media="not x"
e removendo uma vez carregado. JS
"Swap": converta links de folha de estilo para pré -carregamentos que trocam para rel="stylesheet"
uma vez carregados (detalhes). JS
"Swap-High-High": use <link rel="alternate stylesheet preload">
e swap para rel="stylesheet"
uma vez carregado (detalhes). JS
"JS": Injete um carregador CSS assíncrono semelhante ao loadcss e use -o para carregar as folhas de estilo. JS
"JS-LAZY": como "js"
, mas a folha de estilo é desativada até ficar totalmente carregada.
Falso: desativa a adição de tags pré -carregamento.
Tipo: (padrão | "body"
| "media"
| "swap"
| "swap-high"
| "js"
| "js-lazy"
)
Existem várias outras bibliotecas que podem incluir CSS críticos, cada uma com uma abordagem ligeiramente diferente. Aqui estão algumas ótimas opções:
Crítico
Pentil
Webpack-crítico
Webpack-Plugin-Critical
HTML-Crítico-Webpack-Plugin
React-snap
Apache 2.0
Este não é um produto oficial do Google.