#declarative-ui #dioxus #cross-platform #ecs #bevy #ecs-architecture #ui-framework

bevy_dioxus

使用Rust编写具有React-like声明性UI框架和可扩展ECS架构的跨平台应用程序

2个版本

0.1.1 2022年7月14日
0.1.0 2022年5月22日

1249游戏开发


用于 bevy_dioxus_desktop

MIT/Apache

1.5MB
564

bevy_dioxus

Dioxus 插件,用于 Bevy

使用React-like声明性UI框架编写跨平台应用程序
和可扩展的ECS架构,全部在Rust中。


警告:bevy_dioxus 还处于非常早期的开发阶段。

use bevy::prelude::*;
use bevy_dioxus::desktop::prelude::*;
use dioxus::prelude::*;

fn main() {
    App::new()
        .insert_resource(WindowDescriptor {
            title: "Bevy Dioxus Plugin Example".to_string(),
            ..Default::default()
        })
        .add_plugin(DioxusPlugin::<EmptyGlobalState, (), ()>::new(Root))
        .run();
}

fn Root(cx: Scope) -> Element {
    cx.render(rsx! {
        h1 { "Hello, World !" }
    })
}

关于Dioxus和Bevy

Dioxus

Dioxus是一个跨平台的声明性UI框架。它提供了React开发者期望的熟悉功能,例如组件、状态、属性、钩子、全局状态和路由器。如果你熟悉任何现代状态驱动UI框架,你应该能够在不知道Rust的情况下阅读或编写Dioxus组件。

Bevy

Bevy是基于实体组件系统(ECS)设计模式的Rust游戏引擎。将其视为类似于Redux的全局状态管理工具,但性能更好,因为所有系统将尽可能并发运行。多亏了其插件系统,已经有相当多的第三方Bevy插件。想象一下将核心逻辑作为 CorePlugin 与UI层分离。您可以从 bevy_dioxus 开始构建桌面应用程序。然后假设您在未来某个时间点想要发布一个元宇宙版本,这就像将UI插件切换到Bevy的3D渲染插件一样简单,同时仍然使用相同的CorePlugin。

尝试示例

请确保安装Tauri的所有先决条件。 先决条件

gh repo clone JunichiSugiura/bevy_dioxus
cd bevy_dioxus

cargo run --example counter

更多示例可以在 examples/ 目录中找到。

开发

先决条件

一般

  • Tauri先决条件
  • convco:常规提交,更改日志,版本控制,验证
    cargo install convco
    # or
    brew install convco/formulae/convco
    
  • cargo-workspaces:一个用于管理Cargo工作区和它们的crates的工具,受lerna的启发
    cargo install cargo-workspaces
    

网站

  • Zola:一个单二进制文件,内置快速静态网站生成器。
    brew install zola
    
  • Node.js:安装Tailwind CSS

API参考

  • cargo-watch:监视您的Cargo项目的源。
    cargo install cargo-watch
    

运行

示例

# Build
cargo build --examples

# or Run
cargo run --example counter

网站

# Install dependencies
npm i

# Serve locally
zola -r packages/website serve --drafts

# Watch Tailwind CSS
npm run watch

# or build
npm run build

API参考

# Serve doc locally
cargo doc --open --no-deps

# Watch file changes and serve doc locally
cargo watch -s 'cargo doc && http target/doc'

约定

分支名称示例

git checkout -b docs/#20-guide-website

常规提交

在变更日志中需要注明时,请务必使用 convco commit 而不是 git commitgit-cliff 将会自动在 convco 生成的 conventional-commit 消息上生成变更日志。

convco commit

依赖项

~23–69MB
~1M SLoC