Rust全栈手记:Dioxus版本升级

域名与网站云通信企业应用

前言

最近dioxus升级到了0.6.3,这个版本更多的是bug修复,目前我对这个项目的投入是,持续学习,在生态还没达到完全成熟之前,用它写一写简单的网页作为练手使用。我会基于前几个月练手的项目中继续迭代。目前拿来练手的是一个官网项目。
另外关注到这个项目已经从之前的业余开发变成了全职开发,并且得到了FutureWei 、 Satellite.im 和 GitHub Accelerator 这三个公司的赞助。前俩都是通信相关的公司,目前来看前景还比较光明。学习一个框架最担心的莫过于用了几年后作者不维护或者被淘汰。

客户端升级

首先安装binstall工具,之前我一直是cargo install本次想体验下binstall


 
 
 
 
   
cargo install cargo-binstall

然后强制升级,注意未升级前版本是0.6.1


 
 
 
 
   
cargo binstall dioxus-cli --force

查看当前版本,确认升级无误。


 
 
 
 
   
dx -V  
dioxus 0.6.3 (fc1f1c2)

官网差异对比

主要是看cargo.toml文件版本的差异,我看到官网目前依旧用的是0.6.2版本的,落后最新release一个小版本,我把本地项目版本更新为0.6.3。
官网最明显的差异是使用了workspace来隔离,本地小项目练手用的就不作为参考去分模块了。
在依赖的包上和之前有了较大的差异。我的原则是先按照官方修改自己本地的依赖,再去调整编译问题。
此次调整发现我本地的包管理比较混乱,顺手进行了精简。
精简后我本地的配置如下:


 
 
 
 
   
[package]  
name = "silverfox-site"  
version = "0.0.1"  
authors = ["李靖<lijingrs@gmail.com>"]  
edition = "2024"  
  
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html  
  
[dependencies]  
dioxus = { version = "0.6.3", features = ["router", "launch"] }  
dioxus-web = { version = "0.6.3", features = ["hydrate"], optional = true }  
dioxus-ssr = { version = "0.6", optional = true }  
dioxus-material-icons = { version = "3" }  
dioxus-search = { git = "https://github.com/dioxuslabs/dioxus-search" }  
  
serde = { version = "1.0.163", features = ["derive"] }  
wasm-bindgen = { version = "0.2.99", features = ["enable-interning"] }  
once\_cell = "1.17.1"  
web-sys = { version = "0.3.76", features = [  
    "Document",  
    "HtmlDocument",  
    "Window",  
    "Event",  
    "AddEventListenerOptions",  
    "Navigator",  
] }  
slab = "0.4.9"  
  
[build-dependencies]  
  
[profile.release]  
lto = true  
codegen-units = 1  
opt-level = 'z'  
strip = "debuginfo"  
  
[profile.dev.build-override]  
opt-level = 3  
codegen-units = 1  
  
[profile.wasm-dev]  
inherits = "dev"  
debug = 0  
  
[profile.server-dev]  
inherits = "dev"  
debug = 0  
  
[profile.android-dev]  
inherits = "dev"  
  
[profile.release.build-override]  
opt-level = 3  
codegen-units = 1  
  
[features]  
default = []  
web = [  
    "dioxus/web",  
]  
server = [  
    "dioxus/server",  
    "dioxus/ssr",  
]  

picture.image

对ssr的理解


 
 
 
 
   
This website is written with Dioxus, pre-generated with dioxus\_ssr, and then rehydrated with interactivity provided by dioxus\_web.

之前一直对这句话一知半解,在今天我决定按照这句话的方式进行进行实践。但是有点遗憾,macos这个环境不支持,编译会抛异常。我本地的Rust版本也已经超越了官方的一大截。
看官方文档启用web 混合特性后会用ssr进行渲染,页面部分是html,和后端交互部分会封装成javascript。只能等后续官方进一步完善再体验。
从一个业余项目转正后,估计今年会有更快的迭代速度。
附执行命令,本地会抛异常


 
 
 
 
   
 dx serve --features server  

在我的电脑上,目前只能运行以下命令


 
 
 
 
   
dx serve 

其实运行的是默认web服务。

问题处理

picture.image

1. 这个是我本地Rust版本过高导致的不兼容。

2. 另外运行server模式时和mac不兼容。所以暂使用web模式。

3. 新版本升级为了tailwindcss 4.0,之前定制的样式有失效现象。按照tailwind官网重新安装,使用最新的命令样式正常渲染


 
 
 
 
   
npx @tailwindcss/cli -i ./input.css -o ./assets/tailwind.css --watch

picture.image

对Rust生态的思考

Rust凭借内存安全、高性能和现代语法,在系统编程(操作系统、数据库)、基础设施(区块链、云原生)和前沿领域(WebAssembly、嵌入式)崭露头角,能不能真正的大规模崛起要看领头羊是否能基于Rust推出拳头产品。在和成熟语言PK上Rust缺少能拿的出手的杀手级产品,至少目前市面上流行的几个我认为顶多算是热度高,各方面生态都不成熟。想成为黑马还需要几年时间,作为一个参与者我希望这个时间可以是3-5年,而不是5-10年!

0
0
0
0
关于作者
关于作者

文章

0

获赞

0

收藏

0

相关资源
云原生环境下的日志采集存储分析实践
云原生场景下,日志数据的规模和种类剧增,日志采集、加工、分析的多样性也大大增加。面对这些挑战,火山引擎基于超大规模下的 Kubernetes 日志实践孵化出了一套完整的日志采集、加工、查询、分析、消费的平台。本次主要分享了火山引擎云原生日志平台的相关实践。
相关产品
评论
未登录
看完啦,登录分享一下感受吧~
暂无评论