5个不稳定版本

0.4.0 2020年12月2日
0.3.2 2020年10月20日
0.3.1 2020年10月20日
0.3.0 2020年10月20日
0.2.0 2020年10月10日

#853 in 过程宏

Download history 22/week @ 2024-03-11 17/week @ 2024-03-18 24/week @ 2024-03-25 58/week @ 2024-04-01 16/week @ 2024-04-08 18/week @ 2024-04-15 15/week @ 2024-04-22 16/week @ 2024-04-29 20/week @ 2024-05-06 21/week @ 2024-05-13 18/week @ 2024-05-20 20/week @ 2024-05-27 15/week @ 2024-06-03 19/week @ 2024-06-10 19/week @ 2024-06-17 20/week @ 2024-06-24

76 个月下载量
用于 9 个库 (7 直接)

MIT 许可证

375KB
9K SLoC

Polyhorn

一个用于快速构建跨平台Rust应用的库 🦀。

Polyhorn 是一个用于构建用户界面的Rust库。对于熟悉React或React Native的用户,这个库在目的上将会非常相似。

它还包含自己的命令行界面,使得开始一个新的项目以及构建和运行现有项目变得非常容易。

口语上,两者都称为Polyhorn。


🚧 警告: Polyhorn 仍然处于开发阶段,这意味着在正式发布之前可能会进行许多破坏性更改和功能缺失(对此表示歉意)。


入门

安装

安装Polyhorn非常简单,只需几秒钟。如果您是Rust的新手,您还需要按照以下步骤1安装Rust。如果您已经使用Rust,您可以直接跳过步骤1,使用步骤2安装Polyhorn。

  1. 如果您尚未安装Rust,请使用rustup安装Rust。

    $ curl -sSf https://sh.rustup.rs | sh
    
  2. 现在,使用Rust提供的包管理器cargo安装Polyhorn。

    $ cargo install polyhorn
    

开始一个项目

从我们的内置模板之一开始一个新的项目非常简单。对于一个几乎为空的项目,运行

$ polyhorn new hello-world

您可以将 hello-world 替换为您应用的名称。请确保它只包含字母数字字符和连字符。

这将生成一个具有以下结构的目录

hello-world/
├── .gitignore
├── assets
│   └── .gitkeep
└── src
    └── lib.rs

这是 src/lib.rs 中的内容

use polyhorn::prelude::*;

#[derive(Default)]
pub struct App {}

impl Component for App {
    fn render(&self, _manager: &mut Manager) -> Element {
        poly!(<Window>
            <View style=!{
                align-items: center;
                justify-content: center;
                background-color: red;
                height: 100%;
            }>
                <Text style=!{ color: white; }>
                    "Welcome to your Polyhorn app!"
                </Text>
            </View>
        </Window>)
    }
}

polyhorn::render!(<App />);

运行一个项目

在您的命令行中,导航到您的项目。例如,如果您遵循了上面的说明,现在您应该在 hello-world/ 中。然后,决定您想在哪个平台上运行。请注意,所有平台共享相同的代码库,因此您不需要提前计划。

在iOS上运行

如果您想在iOS模拟器上运行您的应用,请运行以下命令

$ polyhorn run ios

它将要求您选择一个可用的模拟器。


lib.rs:

此包包含所有能够呈现图形用户界面的平台共用的类型和实现。

<style> #macros, #macros ~ table { display: none !important; } </style>

依赖项

~4–7MB
~142K SLoC