首页 > 其他分享 >dioxus 简单试用

dioxus 简单试用

时间:2023-12-11 19:24:26浏览次数:32  
标签:count cargo dioxus cli cx 试用 简单 id

dioxus 是提供了cli 工具的,可以加速应用的开发, 同时也包含一个模版项目可以使用

工具安装

cargo install dioxus-cli

创建&简单项目试用

  • clone项目
    目前cli 似乎与官方说明的不太一致,可以先创建一个cargo 项目,然后执行dx create
 
dx create --template gh:dioxuslabs/dioxus-template
  • 项目结构
├── Cargo.lock
├── Cargo.toml
├── Dioxus.toml
├── README.md
├── input.css
├── src
│   └── main.rs
└── tailwind.config.js
  • 核心代码
    src/main.rs
 
#![allow(non_snake_case)]
use dioxus_router::prelude::*;
use dioxus::prelude::*;
use log::LevelFilter;
fn main() {
    // Init debug
    dioxus_logger::init(LevelFilter::Info).expect("failed to init logger");
    // 桌面应用
    dioxus_desktop::launch(app);
 
}
// 类似yew 的开发模式
fn app(cx: Scope) -> Element {
    render!{
        Router::<Route> {}
    }
}
// 基于路由的开发模式,还是比较方便的
#[derive(Clone, Routable, Debug, PartialEq)]
enum Route {
    #[route("/")]
    Home {},
    #[route("/blog/:id")]
    Blog { id: i32 },
}
 
#[component]
fn Blog(cx: Scope, id: i32) -> Element {
    render! {
        Link { to: Route::Home {}, "Go to counter" }
        "Blog post {id}"
    }
}
 
#[component]
fn Home(cx: Scope) -> Element {
    let mut count = use_state(cx, || 0);
    cx.render(rsx! {
        Link {
            to: Route::Blog {
                id: *count.get()
            },
            "Go to blog"
        }
        div {
            h1 { "High-Five counter: {count}" }
            button { onclick: move |_| count += 1, "Up high!" }
            button { onclick: move |_| count -= 1, "Down low!" }
        }
    })
}
  • 构建&&运行效果
cargo build --release

效果(对于debug 模式的构建可以使用调试)

说明

目前测试直接cargo 安装的cli 与官方文档说明不太一致,我是先创建的项目,然后在cargo 项目中执行的dx create,当然也可以直接基于github template 的clone ,dioxus 工具目前体验看着还是很不错的,值得深入学习下

参考资料

https://dioxuslabs.com/learn/0.4/CLI/installation
https://github.com/DioxusLabs/dioxus
https://github.com/dioxuslabs/dioxus-template

标签:count,cargo,dioxus,cli,cx,试用,简单,id
From: https://www.cnblogs.com/rongfengliang/p/17895330.html

相关文章

  • 发明无止境:简单的螺丝钉也有复杂悠久的专利故事?
    今天跟大家分享一个螺丝钉专利的故事。我们从人类开始就有了连接和固定的需求。最早期的时候,人类就想到了连接和固定最简单的办法就是用钉子把两个物体连接在一起,最早的时候用的是木钉或者楔子。用木钉和楔子的方式简单粗暴,成本也非常的低,但缺点就是由于木钉本身是由木材制作的,所以......
  • dioxus rust 构建跨平台应用的框架
    dioxusrust构建跨平台应用的框架包含的特性原生桌面强大的状态管理快速异步以及协程支持热更新支持对于不同端支持不同的模式 比如桌面支持webassembly的dom处理,ssr等说明目前看dioxus对于开发桌面应用也是一个不错的选择,值得试试,rust周边还是很丰富的参考资......
  • 简单理解批处理和流处理的区别
    批处理和流处理是两种不同的数据处理方法,它们在数据处理的时机、方式和适用场景上有所区别。批处理(BatchProcessing):数据处理时机:批处理通常在数据积累到一定量之后进行。这意味着数据会被存储起来,直到有足够的数据量或者达到预定的处理时间点,然后一次性处理。数据处理方式:在......
  • 简述一下Spring的两大特性(概念,使用范围。作用等方面简单的阐述
    简述一下Spring的两大特性(概念,使用范围。作用等方面简单的阐述1.控制反转(IoC,InversionofControl):概念:控制反转是Spring框架的核心概念,它指的是将对象的创建、组装和管理的控制权从应用程序代码中反转到Spring容器中。在传统的开发模式中,程序员负责直接创建和管理对象,而在......
  • 【Cpp 语言基础】简单聊一聊to_string
    头文件:#include<string>功能:将数字常量转换为字符串参数:value返回值:转换好的字符串重载版本:std::stringto_string(intvalue);(1)(C++11起) std::stringto_string(longvalue);(2)(C++11起) std::stringto_string(longlongvalue);(3)(C++11起) std::stringto......
  • Unity中实现简单的弹反小游戏
    最近开发了一个小游戏,在其中实现了简单的弹反效果。在敌人的剑上绑定一个boxcollider,同时勾选isTrigger:保证玩家有一个胶囊碰撞体。1、敌人代码随后我在控制敌人的代码(enemy.cs)中加入下面的函数控制弹反://进入剑触发器voidOnTriggerEnter(Collidercollider)......
  • mybatis执行时原理的简单分析
    前置知识:mybatis中配置文件的解析自定义实现类的方式动态代理生成代理类的方式mybatis中配置文件的解析解析xml文件的技术有很多,我们不需要全部去掌握,但是我们要知道我们的xml文件通过解析可以得到什么可以发现通过我们解析得到的这2个信息就可以实现我们jdbc的操作了。我......
  • 通过宿主机查看K8S或者是容器内的Java程序的简单方法
    通过宿主机查看K8S或者是容器内的Java程序的简单方法背景最近一个项目的环境出现了cannotcreatenativeprocess的错误提示出现这个错误提示时,dockerexec或者是kubeexec进入容器/POD内部后,无法使用jstack等的命令.然后想简单查看一下问题原因都无从下手.这次......
  • 代码 测试用例 测试结果 测试结果 24. 两两交换链表中的节点
    给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。 示例1:输入:head=[1,2,3,4]输出:[2,1,4,3]示例2:输入:head=[]输出:[]示例3:输入:head=[1]输出:[1] 提示:链表中节点的数目在范围 [0,100] 内......
  • C# 使用AES实现简单的加解密
    加密://使用SHA-256哈希函数处理秘钥varhashedKey=GetSHA256Hash(publicKey);//加密varencryptString=EncryptStringToBytes_Aes(strs,hashedKey);staticstringGetSHA256Hash(stringinput){using(SHA256sha256=SHA256.Create()){byte......