* Translate final.md, hello_world.md, README.md, ROADMAP.md and SUMMARY.md * Translatation complete * Internationalization: move guide to en folder and preserve its history. (#494) * Clean files and build mdBook with localization feature * Rebase, remove leftovers and check book builds for every language: ✅ Co-authored-by: Jon Kelley <jkelleyrtp@gmail.com>
9.3 KiB
Roteiro e Conjunto de Recursos
Este conjunto de recursos e roteiro podem ajudá-lo a decidir se o que a Dioxus pode fazer hoje funciona para você.
Se um recurso que você precisa não existe ou você deseja contribuir com projetos no roteiro, sinta-se à vontade para se envolver juntando-se ao discord.
Em geral, aqui está o status de cada plataforma:
-
Web: Dioxus é uma ótima opção para aplicativos da web puros - especialmente para aplicativos CRUD/complexos. No entanto, ele não possui o ecossistema do React, então você pode estar perdendo uma biblioteca de componentes ou algum hook útil.
-
SSR: Dioxus é uma ótima opção para pré-renderização, hidratação e renderização de HTML em um endpoint da web. Esteja ciente: o
VirtualDomnão é (atualmente)Send + Sync. -
Desktop: você pode criar aplicativos de desktop de janela única muito competentes agora mesmo. No entanto, os aplicativos de várias janelas exigem suporte do núcleo do Dioxus que não estão prontos.
-
Celular: o suporte móvel é muito recente. Você descobrirá as coisas à medida que avança e não há muitas
cratesde suporte para periféricos. -
LiveView: o suporte ao LiveView é muito recente. Você descobrirá as coisas à medida que avança. Felizmente, nada disso é muito difícil e qualquer trabalho poderá ser enviado
upstreamno Dioxus.
Recursos
| Recurso | Situação | Descrição |
|---|---|---|
| Renderização Condicional | ✅ | if/then para esconder/mostrar componente |
| Map, Iterador | ✅ | map/filter/reduce para produzir rsx! |
| Componentes Chaveados | ✅ | comparação em diff com chaves |
| Web | ✅ | renderizador para navegadores Web |
| Desktop (WebView) | ✅ | renderizador para Desktop |
| Estado Compartilhado (Context) | ✅ | compartilha estados através de árvores |
| Hooks | ✅ | células de memoria nos componentes |
| SSR | ✅ | renderiza diretamente para string |
| Componente Filho | ✅ | cx.children() como lista de nós |
| Componentes Sem Elementos | ✅ | componentes que não renderizam elementos reais na DOM |
| Fragmentos | ✅ | elementos múltiplos sem uma raiz real |
| Propriedades Manuais | ✅ | passa manualmente props com a sintaxe de propagação (spread syntax) |
| Entradas Controladas | ✅ | encapsulamento com estado em sobre entradas |
| Estilos CSS/Inline | ✅ | sintaxe para grupos de estilo/atributos em linha |
| Elementos Personalizados | ✅ | define novos elementos primitivos |
| Suspensão | ✅ | programa futuras renderizações usando future/Promise |
| Tratamento Integrado de Erros | ✅ | trata erros graciosamente com a sintaxe ? |
| NodeRef | ✅ | ganha acesso direto aos nós |
| Re-hidratação | ✅ | pre-renderiza HTML para acelerar a primeira impressão na tela |
| Renderização Livre de Gargalos | ✅ | diffs grandes são segmentados sobre quadros para uma transição suave como seda |
| Efeitos | ✅ | executa efeitos após um componente ser enviado para a fila de renderização |
| Portais | 🛠 | renderiza nós fora da árvore tradicional de elementos (DOM) |
| Agendamento Cooperativo | 🛠 | prioriza eventos com mais importância sobre eventos menos importantes |
| Componentes de Servidor | 🛠 | componentes híbridos para aplicativos de única página (SPA) e servidores |
| Divisão de Pacotes | 👀 | carrega o aplicativo assincronamente e eficientemente |
| Componentes Tardios | 👀 | dinamicamente carrega os novos componentes assim que estiverem prontos enquanto a página carrega |
| Estado Global de 1ª Classe | ✅ | redux/recoil/mobx sobre o context |
| Execução Nativa | ✅ | execução como um binário portátil sem um runtime (Node) |
| Sub-Árvore de Memoization | ✅ | pula o diffing em sub-árvores de elementos estáticos |
| Modelos de Alta Eficiência | 🛠 | chamadas rsx! são traduzidas para modelos sobre a DOM |
| Garantia de Correção por Compilador | ✅ | avisa sobre erros em esquemas de modelos inválidos antes do final da compilação |
| Motor de Heurística | ✅ | rastreia componentes na memória para minimizar alocações futures |
| Controle Preciso de Reatividade | 👀 | pula o diffing para ter controle preciso das atualizações de tela |
- ✅ = implementado e funcionando
- 🛠 = sendo trabalhado ativamente
- 👀 = ainda não implementado ou sendo trabalhado
Roteiro
Esses recursos estão planejados para o futuro do Dioxus:
Essencial
- Liberação do Núcleo Dioxus
- Atualizar a documentação para incluir mais teoria e ser mais abrangente
- Suporte para modelos HTML para manipulação de DOM ultrarrápida
- Suporte para vários renderizadores para o mesmo
virtualdom(subárvores) - Suporte para
ThreadSafe(Send+Sync) - Suporte para
Portals
SSR
- Suporte SSR + Hidratação
- Suporte integrado de suspensão para SSR
Desktop
- Gerenciamento de janela declarativa
- Modelos para construção/agregação
- Renderizador totalmente nativo
- Acesso ao contexto Canvas/WebGL nativamente
Móvel
- Biblioteca padrão móvel
- GPS
- Câmera
- Sistema de Arquivo
- Biometria
- Wi-fi
- Bluetooth
- Notificações
- Prancheta (Clipboard)
- Animações
- Renderizador nativo
Empacotamento (CLI)
- Tradução de HTML para RSX
- Servidor de desenvolvimento
- Recarregamento em tempo-real (hot-reload)
- Tradução de JSX para RSX
- Substituição de módulos em tempo-real (hot-modules)
- Divisão de código
- Acervo de macros
- Pipeline CSS
- Pipeline de imagens
Hooks Essenciais
- Roteador
- Gerenciamento de estado global
- Redimensionar o observador
Trabalho em Progresso
Ferramenta de Construção
Atualmente, estamos trabalhando em nossa própria ferramenta de compilação chamada Dioxus CLI que suportará:
- uma TUI interativa
- reconfiguração em tempo real
- recarga de CSS em tempo-real
- ligação de dados bidirecional entre o navegador e o código-fonte
- um interpretador para
rsx! - capacidade de publicar no github/netlify/vercel
- pacote para iOS/Desktop/etc
Suporte ao LiveView / Componente do Servidor
A arquitetura interna do Dioxus foi projetada desde o primeiro dia para suportar o caso de uso LiveView, onde um servidor Web hospeda um aplicativo em execução para cada usuário conectado. A partir de hoje, não há suporte LiveView de primeira classe – você precisará conectar isso sozinho.
Embora não esteja totalmente implementado, a expectativa é que os aplicativos LiveView possam ser um híbrido entre Wasm e renderizado pelo servidor, onde apenas partes de uma página são "ao vivo" e o restante da página é renderizado pelo servidor, gerado estaticamente ou manipulado pelo SPA anfitrião.