纯 rust 实现的前后端分离的博客,大家给点建议意见 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
TOLIVEIN
V2EX    Rust

纯 rust 实现的前后端分离的博客,大家给点建议意见

  •  2
     
  •   TOLIVEIN 2022-03-08 10:19:14 +08:00 5559 次点击
    这是一个创建于 1315 天前的主题,其中的信息可能已经有所发展或是发生改变。
    1. 最近在学习 rust, 恰好朋友前段时间用 rust 开发了一个博客应用,觉得还不错,单纯学习 rust 也可以看下
    2. 项目信息:
      • 纯 rust 写的全栈博客应用,前端使用 yew, 后端使用 actix-web + diesel + postgres
      • github 地址:https://github.com/ppbl/scicode
      • 博客地址:https://scicode.ppbl.top/
      • 目前支持 github 登录,发帖,评论,主题。
      • 本身功能不复杂,只是纯用 rust 感觉比较有意思
      • 后续功能完善中
    21 条回复    2022-03-30 16:17:05 +08:00
    ppbl
        1
    ppbl  
       2022-03-08 10:40:06 +08:00
    ,已 star ,最近正好在学习 rust, 感觉今年 rust 是一个趋势
    TOLIVEIN
        2
    TOLIVEIN  
    OP
       2022-03-08 10:43:52 +08:00
    @ppbl owner 还用 star 吗
    hccsoul
        3
    hccsoul  
       2022-03-08 10:48:14 +08:00
    你为啥用我老婆做头像 他都送我戒指了
    TOLIVEIN
        4
    TOLIVEIN  
    OP
       2022-03-08 10:49:57 +08:00
    @hccsoul 她还送我祖传大剑了呢
    agagega
        5
    agagega  
       2022-03-08 11:07:36 +08:00 via iPhone
    yew 现在用起来感觉怎么样?印象里基于 Wasm 的前端好像还不太成熟的样子
    TOLIVEIN
       
    TOLIVEIN  
    OP
       2022-03-08 11:10:44 +08:00
    @agagega 我在里面划了划水哈哈,肯定不如直接写 js html 舒服,但是是能用的程度。不过最新版本 yew 删了好多东西,都换成第三方的 crate 了
    ppbl
        7
    ppbl  
       2022-03-08 11:12:03 +08:00
    @agagega 用起来还行,常规的功能基本都能实现,只是目前打包出来的 wasm 文件有一点点大,2.4M
    blu10ph
        8
    blu10ph  
       2022-03-08 11:24:00 +08:00
    评论功能有开关吗?国内不让整~
    ppbl
        9
    ppbl  
       2022-03-08 11:42:38 +08:00
    @blu10ph 是加个开关,可以禁止别人评论自己的帖子吗
    TongNianShanHe
        10
    TongNianShanHe  
       2022-03-08 13:57:17 +08:00 via Android
    我是后端用了 rust ,前端用的 vue+element ,前端用 rust 的加载速度和 wasm 大小咋样
    Kilerd
        11
    Kilerd  
       2022-03-08 14:11:28 +08:00 via iPhone
    hmmmm 我只能说这个项目的后端 actix 部分的使用,可以算是还没入门阶段
    ppbl
        12
    ppbl  
       2022-03-08 14:16:30 +08:00
    @Kilerd 看来遇到大佬了,是边学 rust 边写的,主要用实现功能,后面慢慢熟悉了继续优化代码。有哪个方面的意见可以指出来吗
    ppbl
        13
    ppbl  
       2022-03-08 14:19:20 +08:00
    @TongNianShanHe wasm 2.4m, 首次加载略慢后面有缓存就好了,运行时速度目前感觉跟前端框架没有太大差距
    Kilerd
        14
    Kilerd  
       2022-03-08 14:26:43 +08:00   2
    1. lazy_static 已经 out-date 了,once_cell 是更佳主流的选择
    2. 满屏幕的 unwrap expect 只要稍微有一点网络波动,你的 actix-worker 就炸掉了,尝试用一用 thiserror 或者 anyhow ,不然你的所有错误都不能返回一个正常的 http status
    3. 既然使用了 diesel 建议用上 diesel_migration 的 embedded_migration 来做 migration
    4. 在 async controller 里面满眼都是 diesel 的同步操作,意思就是你的 controller 根本就没有享受到 async 带来的好处。选择 diesel 就要学怎么用 actix 的 actor 模型跟 diesel 做组合。 不然就老老实实换成 sqlx 这种异步的数据库操作库
    5. 满屏的 HttpResponse::Ok().json(results) ,actix-web 的默认 impl Responder 对于 Serialize 对象就是 Json 处理。
    6. let token = req.headers().get(AUTHORIZATION); authentication 的处理也是让人震惊,
    pub struct AuthenticationUser {...}
    impl FromRequest for AuthenticationUser {...};
    async fn required_login(user: AuthenticationUser) {...}
    async fn optional_login(user: Option<AuthenticationUser>) {...}
    7. reqwest 的请求建议都写上 timeout 不然很容易炸掉整个 runtime
    Kilerd
        15
    Kilerd  
       2022-03-08 14:30:01 +08:00
    BTW ,你前端部分 WASM 大的原因也是有的。yew 里面不推荐用 reqwest 来做 fetch ,我记得是有一个自带的 fetch 还是什么方法的,不需要引入一个那么庞大的库。
    ppbl
        16
    ppbl  
       2022-03-08 14:36:57 +08:00
    @Kilerd 受益匪浅 下班回去就学习改造一下~0.19 没有自带的 fetch 了,我回去再看看尝试换个小的 crate
    v2ka
        17
    v2ka  
       2022-03-08 15:57:44 +08:00
    做博客来说,完成度太低了。

    这样别人也没法用,成型再发布吧。
    blu10ph
        18
    blu10ph  
       2022-03-08 15:57:49 +08:00
    评论功能有开关吗?国内不让整~
    @ppbl 额,是关掉评论功能,和没有一样~
    DonaidTrump
        19
    DonaidTrump  
       2022-03-08 16:04:58 +08:00
    文章和评论评论的时间没有正确显示东八区的时间
    ppbl
        20
    ppbl  
       2022-03-09 00:11:50 +08:00
    @Kilerd

    1. lazy_static 已修改为 once_cell
    2. 如果有用 HttpResponse::Ok 的地方,使用了更多的 HttpResponse::XXX 表示对应的状态,否则直接用 web::json
    3. impl FromRequest for Claims(其实就是 AuthenticationUser, 只是用了 jwt 暂时用这个名字)

    非常感谢大佬的指点,其他的后面慢慢再优化一下

    @tulongtou

    已修复
    wjx0912
        21
    wjx0912  
       2022-03-30 16:17:05 +08:00
    star+follow
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5837 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 38ms UTC 03:23 PVG 11:23 LAX 20:23 JFK 23:23
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86