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 VirtualDom nã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 crates de 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 upstream no Dioxus.

Recursos


RecursoSituaçãoDescrição
Renderização Condicionalif/then para esconder/mostrar componente
Map, Iteradormap/filter/reduce para produzir rsx!
Componentes Chaveadoscomparação em diff com chaves
Webrenderizador para navegadores Web
Desktop (WebView)renderizador para Desktop
Estado Compartilhado (Context)compartilha estados através de árvores
Hookscélulas de memoria nos componentes
SSRrenderiza diretamente para string
Componente Filhocx.children() como lista de nós
Componentes Sem Elementoscomponentes que não renderizam elementos reais na DOM
Fragmentoselementos múltiplos sem uma raiz real
Propriedades Manuaispassa manualmente props com a sintaxe de propagação (spread syntax)
Entradas Controladasencapsulamento com estado em sobre entradas
Estilos CSS/Inlinesintaxe para grupos de estilo/atributos em linha
Elementos Personalizadosdefine novos elementos primitivos
Suspensãoprograma futuras renderizações usando future/Promise
Tratamento Integrado de Errostrata erros graciosamente com a sintaxe ?
NodeRefganha acesso direto aos nós
Re-hidrataçãopre-renderiza HTML para acelerar a primeira impressão na tela
Renderização Livre de Gargalosdiffs grandes são segmentados sobre quadros para uma transição suave como seda
Efeitosexecuta 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ª Classeredux/recoil/mobx sobre o context
Execução Nativaexecução como um binário portátil sem um runtime (Node)
Sub-Árvore de Memoizationpula 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 Compiladoravisa sobre erros em esquemas de modelos inválidos antes do final da compilação
Motor de Heurísticarastreia 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.