Uso Avançado
Esta página foi traduzida por PageTurner AI (beta). Não é oficialmente endossada pelo projeto. Encontrou um erro? Reportar problema →
O react-intl está otimizado para renderização em tempo de execução e de compilação. Abaixo estão algumas diretrizes que você pode seguir se tiver um orçamento de desempenho rigoroso.
Pré-compilação de mensagens
Você também pode pré-compilar todas as mensagens em AST usando o comando compile do @formatjs/cli e passá-las para o IntlProvider. Isso é especialmente mais rápido porque evita o tempo de análise de string para AST. Os casos de uso para esse suporte são:
-
Renderização do lado do servidor (SSR) ou pré-compilação onde você pode armazenar o AST em cache e não paga custos de compilação múltiplas vezes.
-
Aplicativos desktop usando Electron ou CEF onde você pode pré-carregar/pré-compilar recursos antecipadamente antes do tempo de execução.
Como essa abordagem usa AST como fonte de dados, alterações no AST do @formatjs/icu-messageformat-parser exigirão invalidação de cache.
O AST também é ligeiramente maior em tamanho que mensagens regulares em string, mas pode ser compactado eficientemente.
react-intl sem analisador (40% menor)
Se você garantiu que todas as suas mensagens e defaultMessages estão pré-compiladas conforme acima, você pode resolver @formatjs/icu-messageformat-parser para @formatjs/icu-messageformat-parser/no-parser durante o bundling para obter um pacote significativamente menor (~40% menos). Por exemplo:
webpack.config.js
module.exports = {
//...
resolve: {
alias: {
'@formatjs/icu-messageformat-parser':
'@formatjs/icu-messageformat-parser/no-parser',
},
},
}
rollup.config.js
import alias from '@rollup/plugin-alias'
module.exports = {
//...
plugins: [
alias({
entries: {
'@formatjs/icu-messageformat-parser':
'@formatjs/icu-messageformat-parser/no-parser',
},
}),
],
}
No futuro, caminharemos para tornar esse comportamento padrão.
APIs imperativas
APIs imperativas (ex: formatMessage...) geralmente são mais rápidas que o componente Formatted porque não criam nós extras de ReactElement. Elas devem ter exatamente as mesmas capacidades que os componentes Formatted.
Mais exemplos
Acesse https://github.com/formatjs/formatjs/tree/main/packages/react-intl/examples para mais exemplos de como usar nossas bibliotecas.